(1)继承
类之间可以通过继承建立父子关系,子类可以继承父类的属性和方法,并可以添加自己的特定属性和方法。如下是一个简单示例:
class Student(Person):def __init__(self, name, age, student_id):super().__init__(name, age)self.student_id = student_iddef study(self, subject):print(f"{self.name} is studying {subject}.")# 创建Student类的对象
student = Student("Charlie", 20, "12345")
student.greet() # 调用从父类继承的方法
student.study("Math") # 调用子类特有的方法
(2)、封装
封装也是类的三大特征之一。它允许将数据(属性)和操作(方法)捆绑在一起,同时隐藏对象的内部实现细节。这样可以防止外部直接访问对象的内部数据,只能通过对象提供的接口(方法)来访问和修改数据。如下是一个简单示例:
class Car:def __init__(self, make, model, year):self.make = makeself.model = modelself.year = yearself.__odometer_reading = 0 # 使用双下划线开头表示私有属性def get_odometer_reading(self):return self.__odometer_readingdef update_odometer(self, mileage):if mileage >= self.__odometer_reading:self.__odometer_reading = mileageelse:print("You can't roll back an odometer!")# 创建Car类的对象
my_car = Car("Toyota", "Corolla", 2022)# 尝试直接访问私有属性(会报错)
# print(my_car.__odometer_reading)# 通过公有方法访问和修改私有属性
print(my_car.get_odometer_reading()) # 输出: 0
my_car.update_odometer(100)
print(my_car.get_odometer_reading()) # 输出: 100
在这个示例中,__odometer_reading
属性被定义为私有属性,外部无法直接访问,只能通过公有方法get_odometer_reading()
和update_odometer()
来访问和修改属性的值,从而实现了封装。
(3)、多态
多态是类的三大特征的另外一个,它允许不同类的对象对同一个方法做出不同的响应。在多态中,同一个方法名可以在不同的类中有不同的实现,从而提高了代码的灵活性和可扩展性。
class Animal:def speak(self):passclass Dog(Animal):def speak(self):return "Woof!"class Cat(Animal):def speak(self):return "Meow!"# 创建不同类的对象
dog = Dog()
cat = Cat()# 调用相同的方法,但根据对象的类型会有不同的行为
print(dog.speak()) # 输出: Woof!
print(cat.speak()) # 输出: Meow!
在这个示例中,Animal
类有一个speak()
方法,而Dog
类和Cat
类分别继承Animal
类并重写了speak()
方法。当调用speak()
方法时,根据对象的具体类型,会执行对应类中的方法实现,实现了多态的特性。