Skip to content

Python 的类是面向对象编程 (OOP) 的核心概念,它提供了创建自定义数据类型和行为的蓝图,让我们能够以更结构化、可复用和可维护的方式编写代码。

类的定义

  • 类名:类名的首字母应该大写,采用驼峰命名法 (例如:MyClass)。
  • 类属性:类属性是所有类的实例共享的属性,在类定义中直接赋值。
  • 构造函数 __init__():构造函数在创建类实例时自动调用,用于初始化实例的属性。
    • self 代表当前实例,是每个方法的第一个参数。
    • 构造函数的参数用于设置实例的初始属性值。
  • 类方法:类方法定义了类实例可以执行的操作。
    • self 是每个方法的第一个参数,它代表当前实例。
    • 方法可以通过 self. 访问实例的属性。
python
class 类名:
    # 类属性
    属性1 = 值1
    属性2 = 值2
    
    # 构造函数
    def __init__(self, 参数1, 参数2, ...):
        self.属性1 = 参数1
        self.属性2 = 参数2
        ...

    # 类方法
    def 方法名(self, 参数1, 参数2, ...):
        # 方法体
        ...

类与对象

  • 类 (Class): 类是对象的模板,它定义了对象的属性和方法。
    • 例如,我们可以定义一个名为 Dog 的类,它具有 namebreedage 属性,以及 bark()eat() 方法。
  • 对象 (Object):对象是类的实例,它拥有类定义的属性和方法。
    • 例如,我们可以创建一个名为 buddyDog 对象,它具有 name = "Buddy", breed = "Golden Retriever"age = 3 的属性,以及 bark()eat() 方法。
python
class Dog:
    def __init__(self, name, breed, age):
        self.name = name
        self.breed = breed
        self.age = age

    def bark(self):
        print(f"{self.name} barks!")

    def eat(self):
        print(f"{self.name} eats food.")

buddy = Dog("Buddy", "Golden Retriever", 3)
buddy.bark()  # 输出:Buddy barks!
buddy.eat()   # 输出:Buddy eats food.

类属性和实例属性

  • 类属性: 类属性属于整个类,所有实例共享同一个类属性。
    • 在类定义中直接赋值。
    • 可以通过类名或实例名访问。
  • 实例属性: 实例属性属于每个实例,每个实例拥有自己的实例属性。
    • 在构造函数 __init__() 中赋值。
    • 只能通过实例名访问。
python
class Dog:
    species = "Canis lupus familiaris"  # 类属性

    def __init__(self, name, breed, age):
        self.name = name    # 实例属性
        self.breed = breed  # 实例属性
        self.age = age      # 实例属性

类方法和实例方法

  • 实例方法:实例方法只能通过实例调用,用来操作实例的属性和行为。
    • 第一个参数始终是 self,代表当前实例。
  • 类方法:类方法可以通过类名调用,不依赖于实例。
    • 使用 @classmethod 装饰器修饰。
    • 第一个参数始终是 cls,代表当前类。
  • 静态方法:静态方法与类和实例无关,可以独立使用。
    • 使用 @staticmethod 装饰器修饰。
    • 不需要 selfcls 参数。
python
class Dog:
    species = "Canis lupus familiaris" 

    def __init__(self, name, breed, age):
        self.name = name
        self.breed = breed
        self.age = age

    def bark(self):        # 实例方法
        print(f"{self.name} barks!")

    @classmethod
    def get_species(cls):  # 类方法
        return cls.species

    @staticmethod
    def is_adult(age):     # 静态方法
        return age >= 3

my_dog = Dog("Buddy", "Golden Retriever", 3)
my_dog.bark()              # 输出:Buddy barks!
print(Dog.get_species())   # 输出:Canis lupus familiaris
print(Dog.is_adult(4))     # 输出:True

特殊方法

  • Python 提供了一些特殊方法,它们以双下划线 (__) 开头和结尾,例如 __init__(), __str__(), __repr__() 等。
  • 这些方法可以自定义对象的特定行为,例如对象的初始化、字符串表示等。
python
class Dog:
    def __init__(self, name, breed, age):
        self.name = name
        self.breed = breed
        self.age = age

    def __str__(self):
        return f"Dog: {self.name}, {self.breed}, {self.age} years old"

buddy = Dog("Buddy", "Golden Retriever", 3)
print(buddy)  # 输出:Dog: Buddy, Golden Retriever, 3 years old

总结

Python 类是一种强大的工具,它提供了创建自定义数据类型和行为的机制,使代码更加结构化、可复用和可维护。理解类的概念,能够让我们更好地使用面向对象编程的优势,开发出更加健壮和可扩展的程序。

Released under the MIT License.