📜  对象与类 (1)

📅  最后修改于: 2023-12-03 15:09:29.591000             🧑  作者: Mango

对象与类

在面向对象编程中,一个类是一种定义,它描述了对象的属性和方法。而一个对象则是这个类的一个实例化。对于一个类,我们可以通过实例化生成多个对象,每个对象都有自己的属性和方法。

类的定义

在 Python 中,我们可以使用 class 关键字来定义一个类。

class MyClass:
    def __init__(self, name):
        self.name = name
    
    def say_hello(self):
        print("Hello, my name is", self.name)

其中,__init__ 是一个特殊的方法,用于初始化对象的属性。 self 参数指代的是当前对象本身。

我们可以通过创建类的实例来使用它的方法。

my_object = MyClass("Alice")
my_object.say_hello()  # 输出:Hello, my name is Alice
类的继承

在 Python 中,一个类可以通过继承另一个类来获得它的属性和方法。被继承的类称为父类,继承的类称为子类。

class Animal:
    def __init__(self, name):
        self.name = name
    
    def speak(self):
        raise NotImplementedError("Subclass must implement abstract method")

class Dog(Animal):
    def speak(self):
        return "Woof"

class Cat(Animal):
    def speak(self):
        return "Meow"

在这个例子里,Animal 是一个抽象基类,它的 speak 方法是一个抽象方法,即该方法必须被子类所实现。

DogCat 类继承了 Animal 类,它们重写了 speak 方法,使其能输出狗叫和猫叫的声音。

my_dog = Dog("Rex")
my_cat = Cat("Fluffy")

my_dog.speak()  # 输出:Woof
my_cat.speak()  # 输出:Meow
类的属性

类的属性可以被所有实例所共享。

class Person:
    count = 0
    
    def __init__(self, name):
        self.name = name
        Person.count += 1

alice = Person("Alice")
bob = Person("Bob")

print(Person.count)  # 输出:2

在这个例子里,count 是一个类属性,它在类的所有实例中都是相同的。 __init__ 方法中的 Person.count += 1 语句会在每次创建实例时更新类属性。