2021-04-22  本文已影响0人  W无花果W

这个也很重要,关于这个主题的知识对任何高级Python程序员都很有用。

类提供了一种将数据和功能捆绑在一起的方法。创建一个新类会创建一个新类型的对象,允许创建该类型的新实例。每个类实例都可以附加属性以维护其状态。类实例还可以具有用于修改其状态的方法(由其类定义)。

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

1.类定义语法

最简单的类定义语法示例

当输入一个类定义时,会创建一个新的名称空间,并将其用作局部作用域—因此,所有对局部变量的赋值都会进入这个新名称空间。特别是,函数定义将新函数的名称绑定到这里。

2.类对象

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

属性引用使用Python中用于所有属性引用的标准语法:obj.name, 有效的属性名是创建类对象时类命名空间中的所有名称。类的属性也可以被赋值。

类实例化使用函数表示法。假设类对象是一个无参数函数,它返回一个类的新实例。例如:x=MyClass():创建类的新实例并将此对象分配给局部变量x。实例化操作(“调用”类对象)创建一个空对象。许多类喜欢创建对象,并将实例定制为特定的初始状态。因此类可以定义一个名为__init__()的特殊方法,当一个类定义了一个__init__()方法时,类实例化会自动为新创建的类实例调用__init__()。当然,为了更大的灵活性,__init__()方法可以有参数。在这种情况下,提供给类实例化操作符的参数将传递给__init__()。

3.实例对象

实例对象所能理解的唯一操作是属性引用。有两种有效的属性名:数据属性和方法。方法是“属于”对象的函数。

4.方法对象

若x.f是一个方法对象,可以把它存储起来,稍后再调用。

示例

方法的特殊之处在于实例对象作为函数的第一个参数传递。在我们的示例中,调用x.f()与MyClass.f(x)完全等价。

实例方法对象也有属性:m.__self__是实例方法m()的方法对象,m.__func__是实例方法m()对应的函数对象。

5.函数对象

引用实例的非数据属性时,将搜索实例的类。如果名称表示一个有效的类属性,它是一个函数对象,那么一个方法对象是通过将实例对象和函数对象打包(指向)在一个抽象对象中创建的:这就是方法对象。使用参数列表调用方法对象时,将从实例对象和参数列表构造新的参数列表,并使用此新参数列表调用函数对象

6.类变量和实例变量

一般来说,实例变量用于每个实例特有的数据,类变量用于类的所有实例共享的属性和方法。

7.实例属性名和类属性名同名

上一篇 下一篇

猜你喜欢

热点阅读