ToolkitX
知识库工具箱

面向对象编程

类、继承、多态、魔法方法

30min·进阶

01. 类与对象

类是对象的蓝图,对象是类的实例。Python 使用 class 关键字定义类。__init__ 是构造方法,在创建对象时自动调用。
python
class Dog:
species = "犬科"

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

def bark(self):
    return f"{self.name} says: 汪汪!"

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

dog1 = Dog("旺财", 3)
print(dog1.bark())    # 旺财 says: 汪汪!
print(Dog.species)    # 犬科

02. 继承与多态

继承允许子类复用父类的属性和方法。多态通过鸭子类型实现:如果对象看起来像鸭子、走路像鸭子,那它就是鸭子。
python
class Animal:
def __init__(self, name, sound):
    self.name = name
    self.sound = sound

def speak(self):
    return f"{self.name} says: {self.sound}"

class Dog(Animal):
def __init__(self, name, breed):
    super().__init__(name, "汪汪")
    self.breed = breed

class Cat(Animal):
def __init__(self, name):
    super().__init__(name, "喵喵")

def speak(self):  # 方法重写
    return f"{self.name} says: 喵~"

dog = Dog("旺财", "金毛")
cat = Cat("小花")
print(dog.speak())    # 旺财 says: 汪汪
print(cat.speak())    # 小花 says: 喵~

03. 特殊方法

Python 类可以定义特殊方法(魔术方法),让自定义类支持内置操作,如 len()、print()、+ 运算符等。
python
class Vector:
def __init__(self, x, y):
    self.x = x
    self.y = y

def __repr__(self):
    return f"Vector({self.x}, {self.y})"

def __add__(self, other):
    return Vector(self.x + other.x, self.y + other.y)

def __abs__(self):
    return (self.x2 + self.y2) ** 0.5

def __eq__(self, other):
    return self.x == other.x and self.y == other.y

v1 = Vector(3, 4)
v2 = Vector(1, 2)
print(v1 + v2)       # Vector(4, 6)
print(abs(v1))        # 5.0

知识测验

1/5正确 0

Python 中 self 代表什么?

下一节

文件操作

下一节