【发布时间】:2021-08-31 08:49:41
【问题描述】:
我正在尝试编写父类的方法,该方法允许该类的任何子类仅返回定义为父类的一部分的属性。我可以想到一些 hacky/hardcodey 方法(使用 __dict__),但想知道更 Pythonic/正确的方法。
我想要做的一个例子是这样的:
class Parent:
def __init__(self, var1=1, var2=2):
self.var1 = var1
self.var2 = var2
def get_parent_attrs(self):
# magic
return dict_of_attrs
class Child(Parent):
def __init__(self, var3=3, **kwargs):
super().__init__(**kwargs)
self.var3 = var3
所以可以这样使用:
child = Child(var1='a', var2='b', var3='c')
child.get_parent_attrs()
>>> {'var1':'a', 'var2':'b'}
或者更具体地说是这样的:
class OtherChild(Parent):
def __init__(self, var4=4, **kwargs):
super().__init__(**kwargs)
self.var4 = var4
def create_sibling(self, var3):
return Child(var3=var3, **self.get_parent_attrs())
other_child = OtherChild(var1='a', var2='b', var4='d')
sibling = other_child.create_sibling(var3='c')
我可能正在思考错误的道路,所以如果我这样陈述我的问题可能会更好:如何在子类中编写一个方法,允许我实例化其他类(继承自同一个parent) 与用于实例化原始子类的父属性?
编辑: 我想我通过Get attributibutes in only base class (Python) 找到了解决方案 它将父属性存储在一个变量中。将看看这是否有效,并相应地更新/关闭我的问题
【问题讨论】:
标签: python python-3.x oop attributes