设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 3399|回复: 2
打印 上一主题 下一主题

Python类的多继承问题

[复制链接]

3

主题

1

好友

25

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2022-12-16 01:52:34 |只看该作者 |正序浏览
类的单继承运行正常,代码如下:
class Phone:
    IMEI = None  # 序列号
    producer = 'Buddy'  # 厂商

    def call_by_4G(self):
        print('4G通话状态。')

class Phone2022(Phone):
    face_id = '1001'

    def call_by_5G(self):
        print('2022年新功能:5G通话。')

phone = Phone2022()
print(phone.producer)
phone.call_by_4G()
phone.call_by_5G()


但是多继承运行出错,代码如下:
class Phone:
    IMEI = None  # 序列号
    producer = 'Buddy'  # 厂商

    def call_by_4G(self):
        print('4G通话状态。')

class NFCReader:
    nfc_type = '第五代'
    producer = 'Buddy'  # 厂商

    def read_card(self):
        print('NFC读卡。')

    def write_card(self):
        print('NFC写卡。')
   
class RemoteControl():
    rc_type = '红外摇控'

    def control(self):
        print('红外摇控开启了。')

class MyPhone(Phone, NFCReader, RemoteControl):
    pass

phone = MyPhone
phone.call_by_4G()
phone.read_card()
phone.write_card()
phone.control()


出错提示:
C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python.exe C:/Users/Administrator/PycharmProjects/pythonProject2/类/10_类的多继承.py
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/pythonProject2/类/10_类的多继承.py", line 28, in <module>
    phone.call_by_4G()
TypeError: call_by_4G() missing 1 required positional argument: 'self'

请教是什么原因?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2022-12-17 02:03:26 |只看该作者
不加括号它就变成了类,而不是实例
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

1

好友

25

积分

新手上路

Rank: 1

沙发
发表于 2022-12-16 23:01:50 |只看该作者
已解决,今天重新看了一下,是实例忘记加括号了,真是粗心。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-23 18:03 , Processed in 0.014066 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部