Python类的继承和多态性
Python 中的类可以通过继承来扩展。子类可以继承父类的属性和方法,并且还可以添加新的属性和方法,或者重写父类的方法来改变它们的行为。此外,Python 中还支持多态性,这意味着相同的方法可以在不同的对象上执行不同的操作。
下面是一个使用类继承和多态性的示例代码:
class Website: def __init__(self, name): self.name = name def get_name(self): return self.name def set_name(self, name): self.name = name def get_description(self): return "This website is named " + self.name class Blog(Website): def __init__(self, name, author): super().__init__(name) self.author = author def get_author(self): return self.author def get_description(self): return super().get_description() + " and it is authored by " + self.author class OnlineStore(Website): def __init__(self, name, owner): super().__init__(name) self.owner = owner def get_owner(self): return self.owner def get_description(self): return super().get_description() + " and it is owned by " + self.owner website = Website("pidancode.com") print(website.get_description()) # 输出 "This website is named pidancode.com" blog = Blog("pidancode.com", "John") print(blog.get_description()) # 输出 "This website is named pidancode.com and it is authored by John" store = OnlineStore("pidancode.com", "Jane") print(store.get_description()) # 输出 "This website is named pidancode.com and it is owned by Jane"
在上面的代码中,我们定义了一个基础类 Website,它有一个名称属性 name 和三个方法 get_name、set_name 和 get_description。然后,我们定义了两个子类 Blog 和 OnlineStore,它们继承自 Website 类,并添加了新的属性和方法。
在 Blog 类中,我们定义了一个新的属性 author 和一个新的方法 get_author,它返回博客的作者。我们还重写了父类的方法 get_description,以便返回一个新的描述字符串,其中包括博客的作者。
在 OnlineStore 类中,我们定义了一个新的属性 owner 和一个新的方法 get_owner,它返回在线商店的所有者。我们也重写了父类的方法 get_description,以便返回一个新的描述字符串,其中包括在线商店的所有者。
最后,我们创建了三个不同的对象:website、blog 和 store。虽然它们都是 Website 类的实例,但由于它们的类型是不同的,因此调用它们的 get_description 方法时会返回不同的结果,这就是多态性的体现。
相关文章