实例变量
表示每个对象自己的数据。
定义:对象.变量名
调用:对象.变量名
首次通过对象赋值为创建,再次赋值为修改。
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 负责写入。
原文链接:https://blog.csdn.net/u014639859/article/details/108404982