返回
类的原理(中)
IOS
2023-12-18 16:06:24
成员变量
我们通过前一篇文章知道了对象的属性存储在对象的内存空间中,那么类的成员变量存储在哪里呢?我们知道,类的成员变量是属于类的所有对象的,也就是说,每个对象都可以访问类的成员变量。因此,类的成员变量必须存储在类的内存空间中。
在Python中,类的成员变量存储在一个叫做__dict__
的字典中。__dict__
字典存储了类的所有成员变量,包括实例变量和类变量。实例变量是属于对象的成员变量,而类变量是属于类的成员变量。
我们来看一个例子:
class Person:
# 类变量
species = "Homo sapiens"
def __init__(self, name, age):
# 实例变量
self.name = name
self.age = age
# 创建对象
person1 = Person("John", 25)
person2 = Person("Mary", 30)
# 访问类变量
print(Person.species) # Homo sapiens
# 访问实例变量
print(person1.name) # John
print(person2.age) # 30
在这个例子中,species
是类的成员变量,而name
和age
是对象的成员变量。species
存储在Person.__dict__
字典中,而name
和age
存储在person1.__dict__
和person2.__dict__
字典中。
类方法
类方法是属于类的函数,也就是说,类方法可以被类的所有对象调用。类方法的第一个参数必须是cls
,这个参数代表类本身。
在Python中,类方法可以使用@classmethod
装饰器来定义。例如:
class Person:
# 类变量
species = "Homo sapiens"
@classmethod
def get_species(cls):
return cls.species
# 创建对象
person1 = Person("John", 25)
# 调用类方法
print(Person.get_species()) # Homo sapiens
print(person1.get_species()) # Homo sapiens
在这个例子中,get_species()
是类方法。get_species()
方法的第一个参数是cls
,这个参数代表类本身。get_species()
方法返回类的成员变量species
的值。
小结
在本文中,我们探索了类的成员变量和类方法的存储位置。我们了解到,类的成员变量存储在一个叫做__dict__
的字典中,而类方法可以使用@classmethod
装饰器来定义。