首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python的类(2)

9.3. 初识类

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

9.3.1 类定义语法

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

classClassName:

.

.

.

类的定义就像函数定义(def语句),要先定义后使用。(你当然可以在if语句的某一分支,或者一个函数的内部定义它。)

实际上,类定义内的语句通常是函数定义,不过其它语句也可以,而且有时会很有用--后面我们再回过头来讨论。类中的函数定义通常有一个特别的参数列表,用于方法调用约定——同样我们在后面讨论这些。

一旦遇到类定义,会创建出一个新的命名空间,用作局部作用域。这样,所有局部变量的赋值就进入这个新命名空间。尤其是函数定义在此绑定了新的函数名。

类定义离开后(正常退出),就创建了一个类对象。这本质上是对类定义创建的命名空间的内容的封装。我们在下一节进一步学习类对象的知识。原始的局部作用域(类定义引入之前生效的那个)得到恢复,并且类对象被绑定到类的名字(类定义头部的给出的)上(例子中是 ClassName )。

9.3.2 类对象

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

属性引用和Python 中所有的属性引用使用同样的标准语法:obj.name。

对象创建后,类命名空间中所有的命名都是有效属性名。所以如果类定义是这样:

classMyClass:

"""A simple example class"""

i =12345

deff(self):

return'hello world'

那么MyClass.i 和 MyClass.f 是有效的属性引用,分别返回一个整数和一个方法对象。也可以对类属性赋值,你可以通过给 MyClass.i 赋值来修改它。

__doc__ 也是一个有效的属性,返回类的文档字符串:"A simple example class"。

类的实例化使用函数符号。只要假装类对象是个返回新的类实例的无参函数就可。例如(假设使用前面的类):

x = MyClass()

以上创建了一个新的类实例,并将该对象赋给局部变量x。

这个实例化操作(“调用”一个类对象)创建了一个空的对象。很多类喜欢用指定了初始状态的实例来创建对象。因此类可能会定义一个名为 __init__() 的特殊方法,像下面这样:

def__init__(self):

self.data = []

当类定义了__init__()方法的话,类的实例化操作会自动为新创建的类实例调用__init__()方法。所以在下例中,可以这样创建一个新的实例:

x = MyClass()

当然,出于弹性的需要,__init__() 方法可以有参数。事实上把给实例化操作的参数传给了__init__() 。例如,

>>>classComplex:

...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)

准确理解—与曾工一块学习

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180111G00LK800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券