鱼C论坛

 找回密码
 立即注册
查看: 1824|回复: 3

[已解决]类中的默认值

[复制链接]
发表于 2023-5-5 10:07:11 | 显示全部楼层 |阅读模式
5鱼币
class A:
    def __init__(self,name):
        self.name=name
class B(A):
    def __init__(self,zf):
        super().__init__("zfx")
        self.zf=zf
ss=B(2)
ssz=ss.name
print(ssz)


上面的代码可以打印出来 zfx这个字符串
那么如果我要显示传过去的 参数 2 怎么做
最佳答案
2023-5-5 10:07:12
先解释一下你的代码里发生了什么:

super() 可以调用父类A的方法, super().__init__("zfx")的意思是 调用A的__init__(), 传入 “zfx” , 子类因此有了父类的self参数name.
因此可以调用 ss.name得到 “zfx”. 而“zf”是在子类中定义的, 加上之前继承的参数, 子类有两个self参数, ss.name 和 ss.zf.

因此可以用
ss.zf
得到2

最佳答案

查看完整内容

先解释一下你的代码里发生了什么: super() 可以调用父类A的方法, super().__init__("zfx")的意思是 调用A的__init__(), 传入 “zfx” , 子类因此有了父类的self参数name. 因此可以调用 ss.name得到 “zfx”. 而“zf”是在子类中定义的, 加上之前继承的参数, 子类有两个self参数, ss.name 和 ss.zf. 因此可以用得到2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-5 10:07:12 | 显示全部楼层    本楼为最佳答案   
先解释一下你的代码里发生了什么:

super() 可以调用父类A的方法, super().__init__("zfx")的意思是 调用A的__init__(), 传入 “zfx” , 子类因此有了父类的self参数name.
因此可以调用 ss.name得到 “zfx”. 而“zf”是在子类中定义的, 加上之前继承的参数, 子类有两个self参数, ss.name 和 ss.zf.

因此可以用
ss.zf
得到2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-5 11:22:09 | 显示全部楼层
参数‘2’这个值是赋值到了类‘B’里面的zf,类‘B’有了对象后,就可以直接通过对象访问
ss.zf        这样应该就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-5 11:27:20 | 显示全部楼层
要打印传递给子类B的参数 zf ,可以在 B 类中添加一个方法来获取 zf 的值,然后调用该方法并打印结果。下面是修改后的代码:
class A:
    def __init__(self, name):
        self.name = name

class B(A):
    def __init__(self, zf):
        super().__init__("zfx")
        self.zf = zf

    def get_zf(self):
        return self.zf

ss = B(2)
ssz = ss.name
print(ssz)

zf_value = ss.get_zf()
print(zf_value)

这样修改后,代码将首先打印 zfx 字符串,然后打印传递给子类B的参数 zf 的值,即2。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 09:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表