我对继承模型有一些问题。我想从给定的父对象创建一个新的子对象,我想访问这些属性。 这是我的结构的简化模型。
class foo:
def __init__(self,id,name):
self.id = id
self.name = name
class bar(foo):
pass
new = foo(id='1',name='Rishabh')
x = bar(new)
print(x.name)
我希望新对象的所有属性都在x对象中继承。 感谢
答案 0 :(得分:0)
首先,正如PEP8 Style Guide所说,“类名通常应使用CapWords惯例。”因此,您应该将类重命名为Foo
和{{1} }。
您可以使用object.__dict__
并覆盖子类中的Bar
方法(__init__
)来完成您的任务
Bar
但这不是传统的做事方式。如果你想拥有一个实例,那是另一个实例的副本,你应该使用class Foo:
def __init__(self, id, name):
self.id = id
self.name = name
class Bar(Foo):
def __init__(self, *args, **kwargs):
# Here we override the constructor method
# and pass all the arguments to the parent __init__()
super().__init__(*args, **kwargs)
new = Foo(id='1',name='Rishabh')
x = Bar(**new.__dict__)
# new.__dict__() returns a dictionary
# with the Foo's object instance properties:
# {'id': '1', 'name': 'Rishabh'}
# Then you pass this dictionary as
# **new.__dict__
# in order to resolve this dictionary into keyword arguments
# for the Bar __init__ method
print(x.name) # Rishabh
模块而不要做这个过度杀伤。