表示每个对象自己的数据。 定义:对象.变量名 调用:对象.变量名
首次通过对象赋值为创建,再次赋值为修改。
w01=Wife() w01.name="建宁" w01.name="建宁公主" __dict__对象的属性,用于存储自身实例变量的字典。定义:
def 方法名称(self,参数列表): 方法体调用:对象地址.实例方法名(参数列表) 注意,不建议通过类名访问实例方法。
至少有一个形参,第一个参数绑定调用这个方法的对象,一般命名为"self"。无论创建多少对象,方法只有一份,并且被所有对象共享,用于表示对象行为。实例变量:自己的数据。实例方法:操作实例变量。类变量:表示所有对象共有的数据。 在类中,方法外定义变量。
class 类名: 变量名=表达式调用:类名.变量名 注意,不建议通过对象访问类变量 特点:存在优先于对象,随类的加载而创建,只有一份,被所有对象共享。
定义:
@classmethod def 方法名称(cls,参数列表): 方法体调用:类名.方法名(参数列表) 注意:不建议通过对象访问类方法。
至少有一个形参,第一个形参用于绑定类,一般命名为’cls’使用@classmethod修饰的目的是调用类方法时可以隐式传递类。类方法中不能访问实例成员,实例方法中可以访问类成员。类方法用于操作类变量,表示大家的行为。类变量:大家的数据。类方法:大家的行为。既不访问实例成员也不访问类成员。通常作为类中独立的工具函数。 定义:
@staticmethod def 方法名称(参数列表) 方法体调用:类名.方法名(参数列表) 注意:不建议通过对象访问静态方法 使用@staticmethod修饰的目的是该方法不需要隐式传参数。
将一些基本数据类型复合成一个自定义类型。向外提供必要的功能,隐藏实现的细节。
例如:
class Wife: def __init__(self,name,face_score,age): self.name=name self.face_score=face_score self.age=age将数据与对数据的操作相关联。代码可读性更高(类是对象的模板)。
作用:无需向类外提供的成员,可以通过私有化进行屏蔽。 做法:命名使用双下划线开头。 本质:障眼法,实际也可以访问。 私有成员的名称被修改,可以通过_dict_属性或dir函数查看
属性@property 公开的实例变量,缺少逻辑验证。私有的实例变量与两个公开的方法相结合,又使调用者的操作略显复杂。而属性可以将两个方法的使用方式像变量一样方便。
定义:
@property def 属性名(self): return self.__属性名 @属性名.setter def 属性名(self,value): self.__属性名=value调用: 对象.属性名=数据 变量=对象.属性名
说明:通常两个公开的属性(读、写),保护一个私有的变量。 @property负责读取,@属性名.setter 负责写入。
