如何解决在子类python3中获取超类输入参数
我需要一些帮助来理解 python3.6 中的以下问题。 我有 2 个班级:父母和孩子。孩子继承父母。 我需要访问在父类中声明/传递给 child 的变量。
但是当我运行命令时:
命令:child(fmt='abc').test_func()
观察:
- 这将返回“X”,这是默认值,但我期待“abc” 被退回。 -- 所以传递的值不起作用。
- 如果我在 test_func 中返回变量 self.mode, 它返回给我正确的值。 -- 所以声明的值是有效的。
注意:**kwargs 用于子类,因为它需要在运行时接受变量输入,这是可行的。
TIA
================================================ ==========================
班级家长:
def __init__(self,fmt = 'X'):
self.fmt = fmt
self.mode = 'abc'
================================================ ==========================
班级孩子(父母):
def __init__(self,**kwargs):
super().__init__()
def test_func(self):
return self.fmt
================================================ ==========================
解决方法
Step1 -- 将变量 'abc' 交给孩子
child(fmt='abc').test_func()
# this works,the variables goes into the child's __init__ function
Step2 -- 孩子应该把它交给父母
def __init__(self,**kwargs):
# the variable is here
super().__init__()
# but never gets passed or assigned anywhere
Step3 -- 父级赋值
def __init__(self,fmt = 'X'):
# your input of 'abc' never reaches here
self.fmt = fmt
两种可能的解决方案。要么
- [BEST] 删除子进程的
__init__
方法,现在变量将直接传递给父进程的__init__
方法,完全跳过 Step2。 - 通过转发任何提供的变量来修复孩子的
__init__
方法(所以super().__init__(**kwargs)
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。