繁体   English   中英

Python 多 inheritance 超级关键字

[英]Python multi inheritance super keyword

为什么?

我想展示的是:

====User Data====
User Name : Tom
User Age : 22
User Address : shanghai

提示:您的帖子看起来主要是代码; 请添加更多细节。 所以,

class A:
    def __init__(self, userName=''):
        self.userName = userName
    def showInfo(self):
        print(f'User Name:{self.userName}')


class B:
    def __init__(self, userAge=0):
        self.userAge = userAge
    def showInfo(self):
        print(f'User Age:{self.userAge}')


class C(A, B):
    def __init__(self, userName='', userAge=0, userAddress=''):
        super(C, self).__init__(userName)
        super(C, self).__init__(userAge)
        self.userAddress = userAddress

    def showInfo(self):
        print('====User Data====')
        super(C, self).showInfo()
        super(C, self).showInfo()
        print(f'User Address:{self.userAddress}')

# why User Name 22 ?
# ====User Data====
# User Name:22
# User Name:22
# User Address:shanghai
tom = C('Tom', 22, 'shanghai')
tom.showInfo()

尝试这个:

class A:
    def __init__(self, userName=''):
        self.userName = userName
    def showInfo(self):
        print(f'User Name:{self.userName}')


class B:
    def __init__(self, userAge=0):
        self.userAge = userAge
    def showInfo(self):
        print(f'User Age:{self.userAge}')


class C(A, B):
    def __init__(self, userName='', userAge=0, userAddress=''):
        A.__init__(self, userName)
        B.__init__(self, userAge)
        self.userAddress = userAddress

    def showInfo(self):
        print('====User Data====')
        A.showInfo(self)
        B.showInfo(self)
        print(f'User Address:{self.userAddress}')

tom = C('Tom', 22, 'shanghai')
tom.showInfo()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM