返回

类的原理(中)

IOS

成员变量

我们通过前一篇文章知道了对象的属性存储在对象的内存空间中,那么类的成员变量存储在哪里呢?我们知道,类的成员变量是属于类的所有对象的,也就是说,每个对象都可以访问类的成员变量。因此,类的成员变量必须存储在类的内存空间中。

在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是类的成员变量,而nameage是对象的成员变量。species存储在Person.__dict__字典中,而nameage存储在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装饰器来定义。