|
|
@@ -11,7 +11,7 @@ |
|
|
|
"cell_type": "markdown", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"Python中的变量、列表、字典等都是对象。不涉及面向对象编程的理论部分,在本教程中对概念进行解释。" |
|
|
|
"Python中的变量、列表、字典等其实都是对象。不涉及面向对象编程的理论部分,在本教程中对概念进行解释。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
@@ -114,7 +114,7 @@ |
|
|
|
"cell_type": "markdown", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"大多数类都有一个名为“\\_\\_init\\_\\_”的函数。这些被称为魔术方法。在这个方法中,你基本上初始化了这个类的变量,或者任何适用于这个方法中指定的所有方法的初始化算法。类中的变量称为属性。" |
|
|
|
"大多数类都有一个名为`__init__`的函数。这些被称为魔术方法。在这个方法中,你基本上初始化了这个类的变量,或者任何适用于这个方法中指定的所有方法的初始化算法。类中的变量称为属性。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
@@ -123,7 +123,7 @@ |
|
|
|
"source": [ |
|
|
|
"这有助于简化实例的初始化过程。例如,\n", |
|
|
|
"\n", |
|
|
|
"在不使用魔法方法或被成为构造函数的\\_\\_init\\_\\_ 的情况下,我们必须定义一个**init()** 方法并调用**init()** 函数。" |
|
|
|
"在不使用魔法方法或被成为构造函数的`__init__`的情况下,我们必须定义一个**init()** 方法并调用**init()** 函数。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
@@ -152,16 +152,16 @@ |
|
|
|
"cell_type": "markdown", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"但是当构造函数被定义后,\\_\\_init\\_\\_被调用,这样初始化实例被创建。" |
|
|
|
"但是当构造函数被定义后,`__init__`被调用,这样初始化实例被创建。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"我们构造我们的\"FirstClass\"去接受两个变量名称和符号。\n", |
|
|
|
"我们构造我们的`FirstClass`去接受两个变量名称和符号。\n", |
|
|
|
"\n", |
|
|
|
"我将会在稍后解释\"self\"。" |
|
|
|
"我将会在稍后解释`self`。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
@@ -181,7 +181,7 @@ |
|
|
|
"cell_type": "markdown", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"现在我们已经定义了一个函数而且添加了\\_\\_init\\_\\_方法。我们可以创建一个名为FirstClass的实例,该实例现在接受两个参数。" |
|
|
|
"现在我们已经定义了一个函数而且添加了`__init__`方法。我们可以创建一个名为FirstClass的实例,该实例现在接受两个参数。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
@@ -599,9 +599,9 @@ |
|
|
|
"source": [ |
|
|
|
"就像我们前面看到的全局变量和局部变量一样,即使类也有自己的变量类型。\n", |
|
|
|
"\n", |
|
|
|
"类属性:在方法外部定义的属性,适用于所有实例。\n", |
|
|
|
"**类属性**:在方法外部定义的属性,适用于所有实例。\n", |
|
|
|
"\n", |
|
|
|
"实例属性:在方法内部定义的属性,只适用于该方法,并且对每个实例都是唯一的。" |
|
|
|
"**实例属性**:在方法内部定义的属性,只适用于该方法,并且对每个实例都是唯一的。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
@@ -773,23 +773,23 @@ |
|
|
|
"cell_type": "markdown", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"在某些情况下,新类可能具有已定义类以前的所有特征。因此,新类可以“继承”前一个类,并向其添加自己的方法。这称为继承。" |
|
|
|
"在某些情况下,新类需要具有已定义类的所有特征。因此,新类可以“继承”前一个类,并向其添加自己的方法,这称为继承。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "markdown", |
|
|
|
"metadata": {}, |
|
|
|
"source": [ |
|
|
|
"考虑类SoftwareEngineer具有薪水的方法。" |
|
|
|
"考虑类Person类具有薪水的方法。" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 38, |
|
|
|
"execution_count": 2, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"class SoftwareEngineer:\n", |
|
|
|
"class Person:\n", |
|
|
|
" def __init__(self,name,age):\n", |
|
|
|
" self.name = name\n", |
|
|
|
" self.age = age\n", |
|
|
@@ -800,16 +800,16 @@ |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 39, |
|
|
|
"execution_count": 3, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"a = SoftwareEngineer('Kartik',26)" |
|
|
|
"a = Person('Kartik',26)" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 40, |
|
|
|
"execution_count": 4, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
@@ -826,7 +826,7 @@ |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 41, |
|
|
|
"execution_count": 5, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
@@ -844,6 +844,7 @@ |
|
|
|
" '__gt__',\n", |
|
|
|
" '__hash__',\n", |
|
|
|
" '__init__',\n", |
|
|
|
" '__init_subclass__',\n", |
|
|
|
" '__le__',\n", |
|
|
|
" '__lt__',\n", |
|
|
|
" '__module__',\n", |
|
|
@@ -860,13 +861,13 @@ |
|
|
|
" 'salary']" |
|
|
|
] |
|
|
|
}, |
|
|
|
"execution_count": 41, |
|
|
|
"execution_count": 5, |
|
|
|
"metadata": {}, |
|
|
|
"output_type": "execute_result" |
|
|
|
} |
|
|
|
], |
|
|
|
"source": [ |
|
|
|
"dir(SoftwareEngineer)" |
|
|
|
"dir(Person)" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
@@ -979,21 +980,9 @@ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 6, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"ename": "NameError", |
|
|
|
"evalue": "name 'SoftwareEngineer' is not defined", |
|
|
|
"output_type": "error", |
|
|
|
"traceback": [ |
|
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
|
|
|
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", |
|
|
|
"\u001b[0;32m<ipython-input-6-9b78404b36d6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mclass\u001b[0m \u001b[0mArtist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mSoftwareEngineer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0martform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mjob\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjob\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mjob\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"is a\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mjob\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", |
|
|
|
"\u001b[0;31mNameError\u001b[0m: name 'SoftwareEngineer' is not defined" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"class Artist(SoftwareEngineer):\n", |
|
|
|
"class Artist(Person):\n", |
|
|
|
" def artform(self, job):\n", |
|
|
|
" self.job = job\n", |
|
|
|
" print(self.name,\"is a\", self.job)" |
|
|
@@ -1003,19 +992,7 @@ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 7, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
|
"ename": "NameError", |
|
|
|
"evalue": "name 'Artist' is not defined", |
|
|
|
"output_type": "error", |
|
|
|
"traceback": [ |
|
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", |
|
|
|
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", |
|
|
|
"\u001b[0;32m<ipython-input-7-1c7e054a8f0c>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mArtist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Nishanth'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m21\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", |
|
|
|
"\u001b[0;31mNameError\u001b[0m: name 'Artist' is not defined" |
|
|
|
] |
|
|
|
} |
|
|
|
], |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"c = Artist('Nishanth',21)" |
|
|
|
] |
|
|
@@ -1068,7 +1045,7 @@ |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 49, |
|
|
|
"execution_count": 8, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
@@ -1094,11 +1071,11 @@ |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 50, |
|
|
|
"execution_count": 9, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"class Artist(SoftwareEngineer):\n", |
|
|
|
"class Artist(Person):\n", |
|
|
|
" def artform(self, job):\n", |
|
|
|
" self.job = job\n", |
|
|
|
" print(self.name,\"is a\", self.job)\n", |
|
|
@@ -1146,11 +1123,11 @@ |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 56, |
|
|
|
"execution_count": 10, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"class emptylist:\n", |
|
|
|
"class EmptyList:\n", |
|
|
|
" def __init__(self):\n", |
|
|
|
" self.data = []\n", |
|
|
|
" def one(self,x):\n", |
|
|
@@ -1163,16 +1140,16 @@ |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 57, |
|
|
|
"execution_count": 11, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [], |
|
|
|
"source": [ |
|
|
|
"xc = emptylist()" |
|
|
|
"xc = EmptyList()" |
|
|
|
] |
|
|
|
}, |
|
|
|
{ |
|
|
|
"cell_type": "code", |
|
|
|
"execution_count": 59, |
|
|
|
"execution_count": 12, |
|
|
|
"metadata": {}, |
|
|
|
"outputs": [ |
|
|
|
{ |
|
|
@@ -1331,7 +1308,7 @@ |
|
|
|
"name": "python", |
|
|
|
"nbconvert_exporter": "python", |
|
|
|
"pygments_lexer": "ipython3", |
|
|
|
"version": "3.6.8" |
|
|
|
"version": "3.6.9" |
|
|
|
} |
|
|
|
}, |
|
|
|
"nbformat": 4, |
|
|
|