Skip to content

Commit 899f1cf

Browse files
committed
20181225
1 parent ca46af9 commit 899f1cf

File tree

5 files changed

+534
-122
lines changed

5 files changed

+534
-122
lines changed

.ipynb_checkpoints/Python_Learning_08-checkpoint.ipynb

Lines changed: 12 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -277,74 +277,25 @@
277277
"A.say(B)\n",
278278
"#鸭子模型,只有有呱呱叫,有翅膀,不游泳的就是鸭子"
279279
]
280-
},
281-
{
282-
"cell_type": "markdown",
283-
"metadata": {},
284-
"source": [
285-
"## 6.面向对象的三大特征\n",
286-
"- 封装\n",
287-
"- 继承\n",
288-
"- 多态\n",
289-
"### 6.1 封装\n",
290-
"- 封装就是对对象的成员进行访问限制\n",
291-
" - 公开 public\n",
292-
" - 受保护的 protected\n",
293-
" - 私有的 private\n",
294-
" public.protected.pribate都不是关键字\n",
295-
"- 判断对象位置\n",
296-
" - 对象内部\n",
297-
" - 对象外部\n",
298-
" - 子类中\n",
299-
"- 私有\n",
300-
" - 私有成员时最高级别的封装,只能在当前类或对象中访问\n",
301-
" - 在成员前面加两个__\n",
302-
" - "
303-
]
304-
},
305-
{
306-
"cell_type": "code",
307-
"execution_count": 39,
308-
"metadata": {},
309-
"outputs": [
310-
{
311-
"name": "stdout",
312-
"output_type": "stream",
313-
"text": [
314-
"{'__module__': '__main__', 'name': 'aaaa', '_Cc__age': 20, '__dict__': <attribute '__dict__' of 'Cc' objects>, '__weakref__': <attribute '__weakref__' of 'Cc' objects>, '__doc__': None}\n",
315-
"aaaa\n"
316-
]
317-
},
318-
{
319-
"ename": "AttributeError",
320-
"evalue": "'Cc' object has no attribute '__age'",
321-
"output_type": "error",
322-
"traceback": [
323-
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
324-
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
325-
"\u001b[0;32m<ipython-input-39-32393da89076>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mCc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__dict__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__age\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
326-
"\u001b[0;31mAttributeError\u001b[0m: 'Cc' object has no attribute '__age'"
327-
]
328-
}
329-
],
330-
"source": [
331-
"\n",
332-
"class Cc():\n",
333-
" name = \"aaaa\"\n",
334-
" __age =20\n",
335-
"\n",
336-
"b = Cc()\n",
337-
"print(Cc.__dict__)\n",
338-
"print(b.name)\n",
339-
"print(b.__age)\n"
340-
]
341280
}
342281
],
343282
"metadata": {
344283
"kernelspec": {
345284
"display_name": "Python 3",
346285
"language": "python",
347286
"name": "python3"
287+
},
288+
"language_info": {
289+
"codemirror_mode": {
290+
"name": "ipython",
291+
"version": 3
292+
},
293+
"file_extension": ".py",
294+
"mimetype": "text/x-python",
295+
"name": "python",
296+
"nbconvert_exporter": "python",
297+
"pygments_lexer": "ipython3",
298+
"version": "3.7.0"
348299
}
349300
},
350301
"nbformat": 4,
Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"# 6.面向对象的三大特征\n",
8+
"- 封装\n",
9+
"- 继承\n",
10+
"- 多态\n",
11+
"## 6.1 封装\n",
12+
"- 封装就是对对象的成员进行访问限制\n",
13+
" - 公开 public\\\n",
14+
" - 受保护的 protected\n",
15+
" - 私有的 private\n",
16+
" public.protected.pribate都不是关键字\n",
17+
"- 判断对象位置\n",
18+
" - 对象内部\n",
19+
" - 对象外部\n",
20+
" - 子类中\n",
21+
"- 私有\n",
22+
" - 私有成员时最高级别的封装,只能在当前类或对象中访问\n",
23+
" - 在成员前面加两个__\n",
24+
" - python的是私有不是真私有,是一种name mangling改变策略\n",
25+
" "
26+
]
27+
},
28+
{
29+
"cell_type": "code",
30+
"execution_count": 1,
31+
"metadata": {},
32+
"outputs": [
33+
{
34+
"name": "stdout",
35+
"output_type": "stream",
36+
"text": [
37+
"{'__module__': '__main__', 'name': 'aaaa', '_Cc__age': 20, '__dict__': <attribute '__dict__' of 'Cc' objects>, '__weakref__': <attribute '__weakref__' of 'Cc' objects>, '__doc__': None}\n",
38+
"aaaa\n",
39+
"{'__module__': '__main__', 'name': 'aaaa', '_Cc__age': 20, '__dict__': <attribute '__dict__' of 'Cc' objects>, '__weakref__': <attribute '__weakref__' of 'Cc' objects>, '__doc__': None}\n"
40+
]
41+
}
42+
],
43+
"source": [
44+
"class Cc():\n",
45+
" name = \"aaaa\"\n",
46+
" __age =20\n",
47+
"\n",
48+
"b = Cc()\n",
49+
"#name共有变量\n",
50+
"print(Cc.__dict__)\n",
51+
"print(b.name)\n",
52+
"# print(b.__age)\n",
53+
"print(Cc.__dict__)"
54+
]
55+
},
56+
{
57+
"cell_type": "markdown",
58+
"metadata": {},
59+
"source": [
60+
"## 6.2 继承\n",
61+
"- 继承就是一个类可以送用另一个类的成员属性和成员方法\n",
62+
"- 作用:减少代码,增强代码复用功能,同时可以设置类与类的直接关系\n",
63+
"- 继承与被继承的概念:\n",
64+
" - 被继承的类叫父类,也叫基类,超类\n",
65+
" - 用于继承的类叫之类,也叫派生类\n",
66+
" - 继承与被继承一定存在is-A的关系\n",
67+
"- 继承的语法\n"
68+
]
69+
},
70+
{
71+
"cell_type": "code",
72+
"execution_count": 4,
73+
"metadata": {},
74+
"outputs": [
75+
{
76+
"name": "stdout",
77+
"output_type": "stream",
78+
"text": [
79+
"noname\n"
80+
]
81+
}
82+
],
83+
"source": [
84+
"class Person():\n",
85+
" name = \"noname\"\n",
86+
" age = 0\n",
87+
" def work(self):\n",
88+
" print(\"eating\")\n",
89+
"\n",
90+
"class Man(Person):\n",
91+
" pass\n",
92+
"\n",
93+
"print(Man.name)"
94+
]
95+
},
96+
{
97+
"cell_type": "markdown",
98+
"metadata": {},
99+
"source": [
100+
"- 继承的特征:\n",
101+
" - 所有的类都继承只object类\n",
102+
" - 子类一旦继承父类,则可以使用父类的除私有外成员外的所有内容\n",
103+
" - 子类继承父类是通过引用的关系访问调用的\n",
104+
" - 子类可以定义独有的成员属性和方法\n",
105+
" - 子类的定义的成员与父类相同时,则优先使用子类的成员\n",
106+
" - 子类扩充父类的方法,重新定义,用父类名,父类成员,也可以使用SUPER().父类的成员的格式调用\n",
107+
" - 继承变量函数的查找顺序问题\n",
108+
" - 优先查找自己的\n",
109+
" - 没有查父类\n",
110+
" - 构建函数如果没有定义,这自动查找父类构造函数\n",
111+
" - 如果本类有定义,这不在继续向上查找\n"
112+
]
113+
},
114+
{
115+
"cell_type": "code",
116+
"execution_count": 16,
117+
"metadata": {},
118+
"outputs": [
119+
{
120+
"name": "stdout",
121+
"output_type": "stream",
122+
"text": [
123+
"delphi\n",
124+
"fly\n",
125+
"2514\n"
126+
]
127+
}
128+
],
129+
"source": [
130+
"class Person():\n",
131+
" name = \"noname\"\n",
132+
" age = 18\n",
133+
" __score = 0\n",
134+
" _petname = \"fly\"\n",
135+
" def work(self):\n",
136+
" print(\"eating\")\n",
137+
"class Man(Person):\n",
138+
" name = \"delphi\"\n",
139+
" id =2514\n",
140+
"M = Man() \n",
141+
"print(M.name)\n",
142+
"print(M._petname)\n",
143+
"# print(M.__score)\n",
144+
"print(M.id)"
145+
]
146+
},
147+
{
148+
"cell_type": "code",
149+
"execution_count": 26,
150+
"metadata": {},
151+
"outputs": [
152+
{
153+
"name": "stdout",
154+
"output_type": "stream",
155+
"text": [
156+
"eating\n",
157+
"attention\n"
158+
]
159+
}
160+
],
161+
"source": [
162+
"class Person():\n",
163+
" name = \"noname\"\n",
164+
" age = 18\n",
165+
" __score = 0\n",
166+
" _petname = \"fly\"\n",
167+
" def work(self):\n",
168+
" print(\"eating\")\n",
169+
"class Man(Person):\n",
170+
" name = \"delphi\"\n",
171+
" id =2514\n",
172+
" def make(self):\n",
173+
" print(\"attention\")\n",
174+
" def work(self):\n",
175+
"# Person.work(self)\n",
176+
" super().work()\n",
177+
" self.make()\n",
178+
"\n",
179+
"M = Man()\n",
180+
"M.work()\n"
181+
]
182+
},
183+
{
184+
"cell_type": "code",
185+
"execution_count": 29,
186+
"metadata": {},
187+
"outputs": [
188+
{
189+
"name": "stdout",
190+
"output_type": "stream",
191+
"text": [
192+
"wangwang\n"
193+
]
194+
}
195+
],
196+
"source": [
197+
"class Cat():\n",
198+
" #__init__就是构造函数\n",
199+
" #每次实例化,第一个被调用\n",
200+
" #进行初始化\n",
201+
" def __init__(self):\n",
202+
" print(\"wangwang\")\n",
203+
"GG = Cat()"
204+
]
205+
},
206+
{
207+
"cell_type": "markdown",
208+
"metadata": {},
209+
"source": [
210+
"- 构造函数\n",
211+
" - 是一类特殊的函数,在类进行实例化之前进行调用\n",
212+
" - 如果没有定义,自动查找父类的构造函数\n",
213+
" - 没有子类没有定义,父类的构造函数带参数,则构建对象的参数应该按照父类的参数构造\n",
214+
"- super\n",
215+
" - super不是关键字,而是一个类\n",
216+
" - super的作用是获取MRO(MethodResolutionOreder)列表的第一个类\n",
217+
" - super与父类没有直接关系,当时super可以调用父类\n",
218+
" - super使用的两个方法,调用父类的构造函数"
219+
]
220+
},
221+
{
222+
"cell_type": "code",
223+
"execution_count": null,
224+
"metadata": {},
225+
"outputs": [],
226+
"source": [
227+
"class A():\n",
228+
" pass\n",
229+
"class B(A):\n",
230+
" pass"
231+
]
232+
}
233+
],
234+
"metadata": {
235+
"kernelspec": {
236+
"display_name": "Python 3",
237+
"language": "python",
238+
"name": "python3"
239+
},
240+
"language_info": {
241+
"codemirror_mode": {
242+
"name": "ipython",
243+
"version": 3
244+
},
245+
"file_extension": ".py",
246+
"mimetype": "text/x-python",
247+
"name": "python",
248+
"nbconvert_exporter": "python",
249+
"pygments_lexer": "ipython3",
250+
"version": "3.7.0"
251+
}
252+
},
253+
"nbformat": 4,
254+
"nbformat_minor": 2
255+
}

Keys&&Command.xlsx

34.1 KB
Binary file not shown.

0 commit comments

Comments
 (0)