Python类的继承和多态性中的内置函数
Python是一种面向对象的语言,其中最基本的概念是类和对象。在 Python 中,类可以有继承和多态性的概念,这使得代码的复用和扩展变得更加容易。
类的继承
在 Python 中,类的继承是指一个类可以基于另一个类来创建一个新的类,新的类继承了原有类的属性和方法,并且可以添加自己的属性和方法。
下面是一个简单的示例,演示了如何通过继承创建一个新的类:
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
print(f"{self.name} says hi!")
class Dog(Animal):
def bark(self):
print(f"{self.name} barks!")
在上面的代码中,Animal 类包含一个构造函数和一个 speak() 方法。然后,我们通过继承 Animal 类创建了一个新的类 Dog,并添加了一个新的方法 bark()。
通过这种方式,Dog 类就可以访问 Animal 类的属性和方法。例如,我们可以这样创建一个 Dog 类的实例:
my_dog = Dog("Fido")
my_dog.speak() # 输出 "Fido says hi!"
my_dog.bark() # 输出 "Fido barks!"
多态性
多态性是指可以用同样的方法调用不同类型的对象,并且每个类型的对象会执行自己独特的实现。在 Python 中,多态性是通过覆盖基类方法来实现的。
下面是一个示例,演示了多态性的概念:
class Shape:
def area(self):
pass
class Square(Shape):
def __init__(self, side):
self.side = side
def area(self):
return self.side * self.side
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
在上面的代码中,我们定义了一个基类 Shape 和两个子类 Square 和 Circle。这两个子类覆盖了 Shape 类的 area() 方法,并且提供了自己的实现。
现在,我们可以使用相同的方法调用不同类型的对象,并且每个类型的对象会执行自己独特的实现。例如:
my_square = Square(5) my_circle = Circle(3) print(my_square.area()) # 输出 25 print(my_circle.area()) # 输出 28.26
内置函数
Python 提供了一些内置函数,可以在类和对象之间实现继承和多态性。下面是一些常用的内置函数:
1. isinstance()
isinstance() 函数用于检查一个对象是否是一个指定的类的实例。例如:
my_dog = Dog("Fido")
print(isinstance(my_dog, Dog)) # 输出 True
print(isinstance(my_dog, Animal)) # 输出 True
2. super()
super() 函数用于调用父类的方法。例如:
class Square(Shape):
def __init__(self, side):
self.side = side
def area(self):
return self.side * self.side
class Cube(Square):
def area(self):
return 6 * super().area()
在上面的代码中,Cube 类继承了 Square 类的 area() 方法,并且覆盖了它。然后,Cube 类使用 super() 函数调用 Square 类的 area() 方法。
3. @property
@property 装饰器用于将类的方法装饰成一个属性。例如:
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name.title()
@name.setter
def name(self, value):
self._name = value.lower()
my_person = Person("JOHN")
print(my_person.name) # 输出 "John"
my_person.name = "Mary"
print(my_person.name) # 输出 "Mary"
在上面的代码中,我们定义了一个 Person 类和一个 name 属性。通过 @property 装饰器,我们可以将 name() 方法装饰成一个属性,并且使用 setter 方法来设置它。
总结
Python 类的继承和多态性使代码的复用和扩展变得更加容易。使用内置函数可以更加方便地实现继承和多态性的概念。
