类变量:
定义:
类变量是类的属性,此属性属于类,不属于此类的实例
作用:
通常用来存储该类创建对象的共有属性
说明:
类变量可以通过该类直接访问
类变量可以通过类的实例直接访问
类变量可以通过此类的对象的__class__属性间接访问
示例:
class Human:
total_count = 0 # 类变量,用来记录Human对象的个数
pass
print(Human.total_count) # 访问类变量
h1 = Human()
print(h1.total_count)
h1.total_count = 100
print(h1.total_count)
print(Human.total_count)
类的文档字符串:
类内第一个没有赋值给任何变量的字符串为类的文档字符串
类的文档字符串可以通过help()函数查看
类的文档字符串绑定在类的__doc__属性上
类的__slots__列表:
作用:
限定一个类创建的实例只能有固定的属性(实例变量)
不允许对象添加列表以外的实例属性(实例变量)
防止用户因写错属性名而发生程序错误
说明:
__slots__属性绑定一个字符串列表
含有__slots__属性的类所创建的实例对象没有__dict__属性,即此实例不用字典来存储
对象的实例属性
示例:
# 此示例示意类内__slots__列表的用法和作用
class Human:
__slots__ = ['name', 'age']
def __init__(self, n, a):
self.name = n
self.age = a
def info(self):
print(self.name, '今年', self.age, '岁')
h1 = Human('小张', 8)
h1.info()
print(h1.__dict__) # 此处出错,在类中添加__slots__列表后,就不存在__dict__属性了
h1.Age = 9 # 此处会出错,__slots__列表没有Age属性
h1.info()
类方法:
定义:
类方法是用于描述类的行为,类方法属于类,不属于类的实例
说明:
类方法需要使用'@classmethod'装饰器定义
类方法至少有一个形参,第一个形参用于绑定类,约定为'cls'
类和该类的实例都可以调用类方法
类方法不能访问此类创建的对象的实例属性
示例见:
class A:
v = 0 # 类属性
@classmethod
def set_v(cls, value):
cls.v = value
@classmethod
def get_v(cls):
return cls.v # 用cls访问类变量v
print("A.v =", A.get_v())
A.set_v(10)
print("A.v =", A.get_v())
静态方法:
静态方法是定义在类的内部的函数,此函数的作用域是类的内部
说明:
静态方法用'@staticmethod'装饰器定义
静态方法和普通函数定义相同,不需要传入self和cls参数
静态方法只能凭借该类或类创建的实例调用
静态方法不能访问类变量和实例变量
示例:
class A:
@staticmethod
def myadd(a, b):
return a + b
print(A.myadd(1, 2))
a = A()
print(a.myadd(3, 4))