Python的单继承和多继承

1、单继承
类可以从一个基类继承。这种继承形式被称为单继承。

class Rectangle:
    def __init__(self, length, width):
        self.length = length
        self.width = width
    def area(self):
        return self.length * self.width
#          a=self.length * self.width
#          return a
# reactangle_area = Rectangle(3,4)
# # print(f'长方形的面积是:{reactangle_area.area()}')
# print(reactangle_area.area())

class Square(Rectangle):   # Square 继承了Rectangle的所有属性和方法
    def __init__(self,length,width):     # 重写父类的init方法
        if length==width:
            super(Square,self).__init__(length,width)   # 调用父类的init方法
        else:
            print('这不是一个正方形')
b=Square(10,10)
print(b.area())

class Wukong:
    def test001(self):
        kwargs = {'name': '孙悟空', 'age': '18'}
        return kwargs
class Sun(Wukong):
    def test001(self, **kwargs):
        res = super().test001()    # 调用父类test001的内容 
        res['sex'] = '男'          # 在父类的基础上再去增加性别的键值对
        return res
    pass

to = Sun()

print(to.test001())

2、多继承
如果有多个基类,则需要全部都写在括号里,这种情况称为多继承。
(1) 在继承中基类初始化方法init不会被自动调用。如果希望子类调用基类的init方法,需要在子类的init方法中显示调用了它。
(2)在调用基类的方法时,需要加上基类的类名前缀,且带上sel参数变量。注意在类中调用该类中定义的方法时不需要self参数。
(3)Python总是首先查找对应类的方法,如果在子类中没有对应的方法,Python才会在继承链的基类中按顺序查找。

class Base:
    def play(self):
        print('我是你祖宗')
class A(Base):
    def play(self):
        print("我是祖宗的儿子")
class B(Base):
    def play(self):
        print('我是祖宗的女儿')
class C(B,A):   # 谁先继承就用谁
    pass
c = C()
c.play()      # 我是祖宗的女儿

3、call方法
使用call方法,可以使类的实例像函数一样被调用

class Adder:
    def __init__(self, number):
        self.number = number
    def __call__(self, other):
        return self.number + other
    # 创建一个 Adder 实例
adder = Adder(5)
# 调用这个实例,就像调用一个函数一样
result = adder(3)
print(result)  # 输出: 8

# 这个例子中,Adder类有一个初始化方法__init__,它接受一个参数number,并将其保存在实例变量self.number中。Adder类还定义了一个__call__方法,
# 它接受另一个参数other,并将self.number和other相加,然后返回结果。
# 当创建了一个Adder类的实例adder,并用数字5初始化它之后,我们就可以像调用函数一样调用这个实例,并传入另一个参数(在这个例子中是3)。adder(3)
# 实际上是adder.__call__(3),因此会返回8
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容