类定义语法
最简单的类定义看起来像这样:
class ClassName:
<statement–1>
.
.
.
<statement–N>
类对象
类对象支持两种操作:属性引用和实例化。
可以用实例对象做什么?实例对象理解的唯一操作是属性引用。有两种有效的属性名称,数据属性和方法。
一般来说,实例变量用于每个实例的唯一数据,而类变量用于类的所有实例共享的属性和方法:
class Dog: tricks = [] # mistaken use of a class variable
def __init__(self, name):
self.name = name
def add_trick(self, trick):
self.tricks.append(trick)
>>> d = Dog(‘Fido’)
>>> e = Dog(‘Buddy’)
>>> d.add_trick(‘roll over’)
>>> e.add_trick(‘play dead’)
>>> d.tricks # unexpectedly shared by all dogs
[‘roll over’, ‘play dead’]
class Dog: def __init__(self, name): self.name = name
self.tricks = [] # creates a new empty list for each dog
def add_trick(self, trick):
self.tricks.append(trick)
>>> d = Dog(‘Fido’)
>>> e = Dog(‘Buddy’)
>>> d.add_trick(‘roll over’)
>>> e.add_trick(‘play dead’)
>>> d.tricks
[‘roll over’]
>>> e.tricks
[‘play dead’]
继承~~~~
…..~~~~~
多重继承
私有变量
大多数 Python 代码都遵循这样一个约定:带有一个下划线的名称 应该被当作是 API 的非仅供部分 (无论它是函数、方法或是数据成员)。
迭代器
在幕后,for
语句会调用容器对象中的 iter()
。 该函数返回一个定义了 __next__()
方法的迭代器对象,该方法将逐一访问容器中的元素。 当元素用尽时,__next__()
将引发 StopIteration
异常来通知终止 for
循环。 可以使用 next()
内置函数来调用 __next__()
方法;