第七章:面向对象
类的定义
class Person:
"""人员类"""
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
return f"我是{self.name},今年{self.age}岁"
def __str__(self):
return f"Person({self.name}, {self.age})"
# 创建实例
p = Person("Alice", 25)
print(p.introduce())
继承
class Student(Person):
"""学生类继承自 Person"""
def __init__(self, name, age, grade):
super().__init__(name, age)
self.grade = grade
def introduce(self):
return f"我是{self.name},{self.grade}年级学生"
# 多重继承
class A:
def method(self):
return "A"
class B:
def method(self):
return "B"
class C(A, B): # 继承顺序:A 优先
pass
封装
class BankAccount:
def __init__(self, balance):
self.__balance = balance # 私有属性
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
return amount
return 0
def get_balance(self):
return self.__balance
# 属性装饰器
class Circle:
def __init__(self, radius):
self._radius = radius
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, value):
if value > 0:
self._radius = value
@property
def area(self):
return 3.14 * self._radius ** 2
类方法和静态方法
class MyClass:
count = 0
def __init__(self):
MyClass.count += 1
@classmethod
def get_count(cls):
return cls.count
@staticmethod
def helper():
return "这是一个静态方法"
魔术方法
class Vector:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Vector(self.x + other.x, self.y + other.y)
def __repr__(self):
return f"Vector({self.x}, {self.y})"
def __len__(self):
return int((self.x**2 + self.y**2)**0.5)
v1 = Vector(3, 4)
v2 = Vector(1, 2)
v3 = v1 + v2 # Vector(4, 6)