Python3.2官方文档翻译-- 类定义语法和类对象


6.3 初识类

类引入一些新语法:三种新的对象类型和一些新的语义。

6.3.1 类定义语法

类定义的最简单形式如下:

class ClassName:

.

.

.

类定义和函数定义(def语句)一样,必须先执行然后才生效。(你当然可以把类定义放在if语句分支中或者嵌入在函数中)

在实际情况中,在类定义中的语句常常是方法的定义,但是其他语句也是允许的并且有时是很有用的---以后我们会讨论到这点。在类中的定义方法通常有一个参数列表的特殊形式, 用于方法的调用约定--再者这将来会解释。

当进入类定义时,新的命名空间将会创建且当用局部作用域来用-因此所有的有关局部变量的参数将会进入新的命名空间。特别地, 函数定义绑定新函数的名称。

当类定义完成时,(通过结尾),一个类对象就会产生。这个是由类定义所创建的包含命名空间内容的基本包装。我们将会在接下来的部分了解更多的关于类对象的知识。类对象在这里绑定在类定义文件开头给出的类名称。(就是实例中的ClassName)

6.3.2 类对象

类对象支持两种类型操作:属性引用和实例化

在python中属性引用用标准的语法来操作所有的属性引用:obj.name.合法的属性名称就是当类对象创建时在类命名空间中的所有名称。因此,如果类定义如下:

class MyClass:

"""A simple example class"""

i = 12345

def f(self):

return ’hello world’

则用MyClass.i和MyClass.f是合法的属性引用,各自返回一个整型和函数对象。类属性也可以进行赋值,因此你可以用通过赋值来来改变MyClass.i的值。_doc_是一个合法属性,返回一个属性类的文档字符串。;“一个简单类例子”

类实例就是用函数符号。假设类对象就是无参数的函数,它返回一个类的实例。 例如:(假设上面的类)

x = MyClass()

创建一个类实例和把这个对象赋值给局部变量x.

实例化操作(调用类对象)将会创建一个空对象。许多类可以用设置特定的初始状态来创建对象。因此类可以定义一个名叫_init()的特殊方法,如下:

def __init__(self):

self.data = []

当类定义_init()方式时,类实例化就会自动调用_init_()方法为新创建的类实例。因此在这个实例中,一个新初始化的实例可以通过如下方式得到:

X = MyClass()

当然,_init_方法为了更灵活应用拥有参数。在那种情况下,给予类实例操作的实例将会传递给init方法。例如:

>>> class Complex:

... def __init__(self, realpart, imagpart):

... self.r = realpart

... self.i = imagpart

...

>>> x = Complex(3.0, -4.5)

>>> x.r, x.i

(3.0, -4.5)

评论关闭