171111 Learning Python Chapter 25 OOP-The Big Picture
2017-11-11 20:52
609 查看
类:同函数和模块一样,类是封装逻辑(函数)与数据的另外一种方式。
为什么选用类?
继承
组合
多重组合
通过继承进行定制
运算符重载
属性继承搜索
object.attribute:
I2.w→C3.w:
多重继承的时候,左右顺序的定义如下
类和实例
- 类和实例的主要差异:类是一个产生实例的工厂。
- 实例则有数据项,即带有数据的记录
- 类通常有函数,即处理记录的“程序”
- 类和模板的主要差异:模板在内存空间中只有一个实例,而类可以依据需要任意增加。
类方法的调用
编写类树
类在圆括号中由左至右列出的顺序,会决定其在类树中由左至右的搜索的顺序。
当def出现在Class类的内部的时候,通常称为方法,而且会自动接收第一个特殊参数self
在Python类中,初始化解析表达式-构造函数 __init__, 在实例调用的时候,类名**括号后的对象属性值**C1(‘Bob’),自动赋予给了当前的对象
如果类中编写或继承了_init_方法,则每次类实例创建时,Python会自动调用它。
如果没有_init_方法,实例刚创建时就是一个简单的空的命名空间
self是第一参数,后面的是第二,第三,…参数
小结:在深入学习Python类的时候,要记住Python的OOP(Object-Oriented Programming)模型非常简单,及时在对象树中搜索属性。
为什么选用类?
继承
组合
多重组合
通过继承进行定制
运算符重载
属性继承搜索
超类 ↑ 类1-类2 ↑ 对象1-对象2
object.attribute:
由对象出发,自下而上,自左向右 逐层向上搜索树,寻找属性名称出现的最低(最后更新定义或修改)的地方。 代码隐藏了这种数的形状。
I2.w→C3.w:
I2→C1→C2→C3:自下而上,自左向右,找到首个w即停止,找不到w就报错。 将I2.W解析为C3.w
多重继承的时候,左右顺序的定义如下
Class C2: Class C3: Class C1(C2,C3)
类和实例
- 类和实例的主要差异:类是一个产生实例的工厂。
- 实例则有数据项,即带有数据的记录
- 类通常有函数,即处理记录的“程序”
- 类和模板的主要差异:模板在内存空间中只有一个实例,而类可以依据需要任意增加。
类方法的调用
I2.w即“调用C3.w函数处理I2”,也就是说I2.w( )会调用映射C3.w(I2)调用, 传入【该隐含的实例作为继承的函数的第一个参数**】。 Python把隐含的实例传进方法中的第一个特殊的参数,习惯上将其称为self。
编写类树
class C2:... # make class objects class C3:... class C1(C2,C3):... # Linked to superclass I1=C1() # Make istance objects I2=C2()
类在圆括号中由左至右列出的顺序,会决定其在类树中由左至右的搜索的顺序。
当def出现在Class类的内部的时候,通常称为方法,而且会自动接收第一个特殊参数self
Python中的self相当于C++中的指针 self自动引用正在处理的实例
class C1( ): def setname(self,who): self.name = who I1 = C1( ) I2 = C1( ) I1.setname('bob') I2.setname('mel') print(I1.name) print(I2.name)
bob mel
在Python类中,初始化解析表达式-构造函数 __init__, 在实例调用的时候,类名**括号后的对象属性值**C1(‘Bob’),自动赋予给了当前的对象
传入__init__的第一个参数是新的实例对象自身即self 传入__init__的第二个参数是创建实例对象时括号内的具体属性值
如果类中编写或继承了_init_方法,则每次类实例创建时,Python会自动调用它。
如果没有_init_方法,实例刚创建时就是一个简单的空的命名空间
self是第一参数,后面的是第二,第三,…参数
class C1( ): def __init__(self,who,how): self.name = who self.grade = how I1 = C1('Bob','98') I2 = C1('Mel','97') print(I1.name,I1.grade) print(I2.name,I2.grade)
Bob 98 Mel 97
小结:在深入学习Python类的时候,要记住Python的OOP(Object-Oriented Programming)模型非常简单,及时在对象树中搜索属性。
相关文章推荐
- Predictive modeling, supervised machine learning, and pattern classification — the big picture
- Failing To See the Big Picture - Mistakes we make when learning programming
- Failing To See the Big Picture - Mistakes we make when learning programming
- Failing To See the Big Picture - Mistakes we make when learning programming
- Linux: the big picture
- Assignments-Learning Python Chapter 11
- [原创] Learning in Python:Chapter 5 Numeric Types
- Architecture - Get The Big Picture【译文】
- Starting From 0 Learning Python(The Fifth Day)
- learning python in the hard way习题1~5的附加题练习
- deep-learning-with-python --the author of keres
- Chapter10. UINavigationController - iOS Programming- The Big Nerd Ranch Guide 读书笔记
- Starting from 0 learning Python(The First Day)
- Learning with python: Chapter3~4 Functions,Conditionals and Recursion
- Learning Python第二版笔记-Chapter 4 Numbers
- Doctest: The Easiest Testing Tool(Chapter 2 of Python Testing Beginner's Guide)
- python Theano包--deep learning library--安装
- Python chapter 7 learning notes
- Learn Python The Hard Way(25)
- 《learning python the hard way》习题46 项目骨架搭建 问题小结(一)之软件包的安装