一个类,用作定义特定对象基本特征的模板。下面是一个例子:
class Person(object): """一个简单的类。""" # 文档字符串 species = "Homo Sapiens" # 类属性 def __init__(self, name): # 特殊方法 """This is the initializer. It's a special method (see below). """ self.name= name # 实例属性 def __str__(self): # 特殊方法 """This method is run when Python tries to cast the object to a string. Return this string when using print(), etc. """ return self.name def rename(self, renamed): # 常规方法 """重新分配并打印名称属性。""" self.name= renamed print("Now my name is {}".format(self.name))
在查看上述示例时,有几点需要注意。
类由属性(数据)和方法(函数)组成。
属性和方法被简单地定义为普通的变量和函数。
如相应的文档字符串中所述,该__init__()方法称为初始化程序。它等同于其他面向对象语言中的构造函数,是创建新对象或类的新实例时首先运行的方法。
适用于整个类的属性首先被定义,称为类属性。
应用于类(对象)的特定实例的属性称为实例属性。它们一般在里面定义__init__();这不是必需的,但建议这样做(因为在外部定义的属性有在定义__init__()之前被访问的风险)。
包含在类定义中的每个方法都将相关对象作为其第一个参数传递。这个词self用于这个参数(self实际上是约定俗成的,因为这个词self在 Python 中没有固有的含义,但这是 Python 最受尊重的约定之一,你应该始终遵循它)。
那些习惯于使用其他语言进行面向对象编程的人可能会对一些事情感到惊讶。一是 Python 没有真正的private元素概念,所以默认情况下,一切都模仿 C++/Javapublic关键字的行为。有关详细信息,请参阅此页面上的“私有班级成员”示例。
一些类的方法具有以下形式:__functionname__(self, other_stuff). 所有这些方法都被称为“魔术方法”,并且是 Python 中类的重要组成部分。例如,Python 中的运算符重载是通过魔术方法实现的。有关更多信息,请参阅相关文档。
现在让我们创建一些Person类的实例!
>>> # 实例 >>> kelly = Person("Kelly") >>> joseph = Person("Joseph") >>> john_doe = Person("John Doe")
我们目前有三个Person对象kelly,joseph、 和john_doe。
我们可以使用点运算符从每个实例访问类的属性.再次注意类和实例属性之间的区别:
>>> # 属性 >>> kelly.species 'Homo Sapiens' >>> john_doe.species 'Homo Sapiens' >>> joseph.species 'Homo Sapiens' >>> kelly.name 'Kelly' >>> joseph.name 'Joseph'
我们可以使用相同的点运算符执行类的方法.:
>>> # 方法 >>> john_doe.__str__() 'John Doe' >>> print(john_doe) 'John Doe' >>> john_doe.rename("John") 'Now my name is John'