1. 静态字段(类变量
) 普通字段(成员变量
)
class BasePoint:
count = 0
def __init__(self,x):
self.x = x
其中count就是静态字段,而x是普通字段,普通字段只能通过 实例对象 访问
静态字段可以通过类名访问,也可以通过实例访问
class BasePoint:
count = 0
def __init__(self,x):
self.x = x
b1 = BasePoint(1)
b2 = BasePoint(2) # 此时两者的count = 0
b1.count = 1 # 此时b1的count = 1 .b2 的count没变还是0
# 分界线演示
BasePoint.count = 999 # 此时b1.count没变,因为b1.count的值已经重写,不会找BasePoint
# 但是b2.count未重写,它的值需要找BasePoint也就是999
#分界线演示
# 此时再删除b1.count,print(b1.count)时会找父类,也就是999
del b1.count
可以从类的观点上解释静态字段(类变量)
:类继承
- 将实例看作是父类的子类,父类中有
类变量
,所以在子类中也可以得到类变量
的值,实例修改值,就相当于子类重写,删除值就是把重写删除,调用值的时候还是去父类中找;父类修改值时,没有这个属性的子类,值跟着修改,重写过子类的属性的值不变,若此时再将子类的属性删除,它还是会去父类中找。 上面代码👆
2. 静态方法 类方法 实例方法
实例方法 ----它是实例的方法
- 其中最常用的时实例方法,通过创建类的实例来调用这个方法,在定义时必须传入self参数,表示调用当前方法的实例。
静态方法
-
静态方法: 某个方法跟这个类有关系,但是不会用到类中的属性方法,它的定义可以不传入参数。
-
但其实python中并不存在真正的静态方法,因为在python中所有都是对象,类也是对象的实例,就可以把这个方法作为类的成员。
类方法 -----它是类相关的方法
- 在定义时要传入cls参,表示当前类,在类方法中可以调用类属性,不能调用实例属性和方法
- 类方法和静态方法在应用上有相似之处,只不过类方法可以通过传入的cls参数调用此类中的静态属性,而且在返回的时候可以知道是子类可调用的此方法还是父类调用的此方法。
- 类方法是不纯粹的,静态方法是纯粹的,静态方法为了代码的简洁留在了关联的类中,类方法和类的关联性更大一些。他们都不在实例中运行,是类的方法,不是实例的方法。
网友评论