类变量: class variable(也叫类属性)
类变量是类的属性,此属性属于类
作用:用来记录类相关的数据
说明:
类变量可以通过类直接访问
类变量可以通过类的实例直接访问
类变量可以通过此类的实例的__class__属性间接访问
如:
class Human:
cout = 0 #创建类变量
print(Huname.cout) #0
h1 = Human()
print(h1.cout) #0
h1.count = 100
print(Huname.cout) #0
print(h1.cout) #100
h1.__class__.count += 1
print(Huname.cout) #1
print(h1.cout) #100
类的__slots__列表
作用:
限定一个类的实例只能有固定的属性(实例变量)
通常为防止错写属性名而发生运行时错误
说明:
含有__slots__列表的类创建的实例对象没有__dict__属性,即此实例不用字典来保存对象的属性(实例变量)
语法:
class Student:
__slots__ = ['name','score'] #此语句代表只允许这个类的实例有 name 和 score属性,当添加其他属性时,会报错
def __init__(self,name,score):
self.name = name
self.score = score
类方法 @classmethod
类方法是描述类的行为的方法,类方法属于类
说明:
类方法需要用@classmethod 装饰器定义
类方法至少有一个形参,第一个形参用于绑定类,约定写为'cls'
类和该类的实例都可以调用类方法
类方法不能访问此类创建的实例的属性(只能访问类变量)
语法:
class Car:
count = 0
@classmethod
def getTotalCount(cls):
return cls.count
print(Car.getTotalCount()) #用类来调用类方法
静态方法 @staticmethod
静态方法不属于类,也不属于类的实例,它相当于字义在类内的普通函数,只是它的作用域属于类
语法:
class A:
@staticmethod
def myadd(x, y):
return x + y
print(A.myadd(1,2))
发表评论