栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python之类的继承,调用父类的属性和方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python之类的继承,调用父类的属性和方法

本文转自python__基础 : 类的继承,调用父类的属性和方法

1.继承,调用父类属性方法
在python里面,继承一个类只需要这样写:

class Animal:
    def heshui(self):
        print('动物正在喝水')

class Cat(Animal):
    pass

cat = Cat()
cat.heshui()

动物正在喝水

这样Cat就有了Animal的所有属性和方法,调用的时候直接调用就可以了:

这个时候,如果子类想重写父类的方法,可以直接重写:

class Animal:
    def heshui(self):
        print('动物正在喝水')

class Cat(Animal):
    def heshui(self):
        print('猫正在喝水')
cat = Cat()
cat.heshui()

猫正在喝水

如果想调用父类的 heshui 这个方法,可以用 super() :

class Animal:
    def heshui(self):
        print('动物正在喝水')

class Cat(Animal):
    def heshui(self):
        super().heshui()
cat = Cat()
cat.heshui()

动物正在喝水

2.强制调用父类私有属性方法
如果父类的方法是私有方法,如 def __heshui(self) 这样的话再去调用就提示没有这个方法,其实编译器是把这个方法的名字改成了 _Animal__heshui(),如果强制调用,可以这样:nohtyp```

class Animal:
    def __heshui(self):
        print('动物正在喝水')

class Cat(Animal):
    def heshui(self):
        super()._Animal__heshui()

cat = Cat()
cat.heshui()

动物正在喝水

最后,如果自己也定义了 init 方法,那么父类的属性是不能直接调用的:

class Animal:
    def __init__(self):
        self.a = 'aaa'

class Cat(Animal):
    def __init__(self):
        pass

cat = Cat()
print(cat.a)

AttributeError: ‘Cat’ object has no attribute ‘a’

那么可以在 子类的 __init__中调用一下父类的 init 方法,这样就可以调用了:

class Animal:
    def __init__(self):
        self.a = 'aaa'

class Cat(Animal):
    def __init__(self):
        super().__init__()  
        #也可以用 Animal.__init__(self)  这里面的self一定要加上

cat = Cat()
print(cat.a)

aaa

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/269730.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号