创建类的时候类名后括号里能写什么,都有什么作用?

创建类的时候类名后括号里能写什么,都有什么作用?

# 具体遇到的问题
这些括号里都是我乱打的,不懂能加什么,而且我都没有return,为什么会打印出东西,什么原理,另外第4打不出来,第5就能打出来
# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

1、

class Person(tuple):

    def __init__(self,*args,**kwargs):

        pass

b=Person(('4'))

print(b)


2、

class Person(set):

    def __init__(self,*args,**kwargs):

        pass

b=Person(('4'))

print(b)


3、

class Person(dict):

    def __init__(self,*args,**kwargs):

        pass

b=Person(('4'))

print(b)


4、

class Person(dict):

    def __init__(self,*args,**kwargs):

        pass          

b=Person(name={'a':1},d=3)

print(b)


5、

class Person(dict):

    def __init__(self,*args,**kwargs):

        super(Person,self).__init__(*args,**kwargs)

            

b=Person(name={'a':1},d=3)

print(b)


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好,

1. 括号中表示继承的父类,若有继承则写相应的类名即可,一般会继承object类;
2. 没有return会有结果和继承的类有关,底层在实现时是不一样的;
3. 继承dict类需要调用父类dict的init方法才会有结果输出,tuple,set,dict是系统定义好的数据类型,一般不会被继承。

  • 慕码人9577935 提问者 #1
    就这个5能打印出来是什么逻辑?我上面也没定义父类,就单输入5的代码就行。
    2020-11-19 00:38:19
  • 好帮手慕小轩 回复 提问者 慕码人9577935 #2
    同学,你好!Person继承了dict类,是super调用父类的__init__方法才可以输出结果,这和字典类型与python底层实现方式导致的,必须要调用父类的__init__方法才可以。
    2020-11-19 10:54:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师