文章目录
在Python中,继承是一种基于已存在的类来创建新类的方式。这种机制允许我们定义一个通用的类,然后基于这个类来定义一些特定的类,这些特定的类将继承通用类的属性和方法,同时也可以添加或覆盖一些新的属性和方法。这种方式极大地提高了代码的重用性和可扩展性。
继承的基本语法
在Python中,使用冒号(:)来表示类之间的继承关系。子类(或派生类)在定义时,将其父类(或基类)的名字放在括号中。
实例
class Parent:
def __init__(self, name):
self.name = name
def greet(self):
print(f"Hello,{self.name}!")
class Child(Parent):
def __init__(self,name,age):
super().__init__(name)
self.age =age
def greet(self):
super().greet()
print(f"I'm {self.age} years old.")
if __name__ == '__main__':
child_instance = Child("john",10)
child_instance.greet()
#输出结果:
#Hello,john!
#I'm 10 years old.
继承的特点
- 代码重用:继承允许子类直接使用父类中的属性和方法,无需重新编写相同的代码。
- 扩展性:子类可以在继承父类的基础上添加新的属性和方法,或者覆盖(重写)父类中的方法以提供特定的实现。
- 多态性:继承是实现多态性的基础。多态性允许我们将子类的对象当作父类的对象来使用,同时保持子类的特定行为。
继承的类型
- 单继承:子类只继承一个父类。上面的例子就是单继承的示例。
- 多继承:子类继承多个父类。在Python中,可以使用逗号分隔多个父类来实现多继承。
实例
class A:
def method_a(self):
print("Method A")
class B:
def method_b(self):
print("Method B")
class C(A, B):
pass
c_instance = C()
c_instance.method_a() # 调用A类方法
c_instance.method_b() # 调用B类方法
# 输出结果:
#Method A
#Method B
多态
多态的本质在于同一函数接口(即方法)在接受不同的类型参量时表现出不同的行为。这得益于面向对象编程中的继承机制,子类可以继承父类的方法,并根据需要重写这些方法,从而在调用时展现出不同的行为。
实例:
class Animal(object):
def __init__(self, leg, height):
self.leg = leg
self.height = height
def run(self):
print("Animal is run")
class Dog(Animal):
def __init__(self, leg, height, bark):
super().__init__(leg, height)
self.bark = bark
def run(self):
print("dog is running")
class Cat(Animal):
def __init__(self, leg, height, jump):
super().__init__(leg, height)
self.jump = jump
def run(self):
super().run()
print("cat is running")
def run_twice(animal:Animal):
animal.run()
animal.run()
if __name__ == '__main__':
animal = Animal(4,1)
snoopy = Dog(3,1.2,"wnagwang")
tom = Cat(2,1.1,1.8)
run_twice(animal)
run_twice(snoopy)
run_twice(tom)
#输出结果:
#dog is running
#dog is running
#Animal is run
#cat is running
#Animal is run
#cat is running
多态是编程中一种强大的特性,它允许程序员编写出更加灵活、可重用和可扩展的代码。通过多态,可以实现不同对象对同一消息的不同响应,从而满足复杂的编程需求。
标签:__,run,python,子类,self,多态,面向对象,继承,def From: https://blog.csdn.net/2301_77698138/article/details/140475565