1、attribute references 属性引用
Now what can we do with instance objects? The only operations understood by instance objects are attribute references. There are two kinds of valid attribute names: data attributes and methods.
我们能对实例对象做什么呢?实例对象仅能理解的操作是属性的引用。存在两种有效的属性:数据属性和方法。
2、attribute reference -- method
The other kind of instance attribute reference is a method. A method is a function that “belongs to” an object.
另一种实例属性的引用是方法,方法是一个函数,但是其属于对象。
3、self
方法的第一个参数常常被命名为 self
。 这也不过就是一个约定: self
这一名称在 Python 中绝对没有特殊含义。 但是要注意,不遵循此约定会使得你的代码对其他 Python 程序员来说缺乏可读性,而且也可以想像一个 类浏览器 程序的编写可能会依赖于这样的约定。
4、__init__() 初始化函数/构造函数
The instantiation operation (“calling” a class object) creates an empty object. Many classes like to create objects with instances customized to a specific initial state. Therefore a class may define a special method named __init__()
, like this:
def __init__(self):
self.data = []
When a class defines an __init__()
method, class instantiation automatically invokes __init__()
for the newly-created class instance.
实例化操作会创建一个空对象。 许多类喜欢创建带有特定初始状态的自定义实例。 为此类定义可能包含一个名为 __init__()
的特殊方法,就像这样:
def __init__(self):
self.data = []
当一个类定义了 __init__()
方法时,类的实例化操作会自动的为新创建的类实例发起调用 __init__()方法,
对新实例进行初始化。
5、继承的定义
class DerivedClassName(BaseClassName):
class DerivedClassName(Base1, Base2, Base3):
6、super()
super() 函数是用于调用父类(超类)的一个方法,The benefits of super()
in single-inheritance are minimal ,其主要用来解决多重继承问题,it lets you avoid referring to the base class explicitly。
class LoggingDict(dict):
def __setitem__(self, key, value):
logging.info('Setting %r to %r' % (key, value))
super().__setitem__(key, value)
多重继承中调用方法时,需要对当前类和基类进行搜索以确定方法所在的位置,这就牵涉到MRO(Method Resolution Order,方法解析顺序)
7、解析
Method references are resolved as follows: the corresponding class attribute is searched, descending down the chain of base classes if necessary, and the method reference is valid if this yields a function object.
8、重载
Derived classes may override methods of their base classes.
参考: