在Python中初始化对象的子对象
让我们有一个类在Python中初始化对象的子对象,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,让我们有一个类A的对象x(可能有“私有”字段,我不知道),我正在创建一个类B: class B(A): # ... class A(): def __init__(self, variable): self.variable = variable class B(A): def __init__(self, *args, **kwargs): super(self.__class__, self).__init__(*args, **k
A
的对象x
(可能有“私有”字段,我不知道),我正在创建一个类B
:
class B(A):
# ...
class A():
def __init__(self, variable):
self.variable = variable
class B(A):
def __init__(self, *args, **kwargs):
super(self.__class__, self).__init__(*args, **kwargs)
现在我想创建一个类B
的对象y
,其A
部分等于x
如何在Python(2.x和3.x)中实现这一点?我不知道自己是否理解得很好,但我认为在
类B中需要这个:
class A():
def __init__(self, variable):
self.variable = variable
class B(A):
def __init__(self, *args, **kwargs):
super(self.__class__, self).__init__(*args, **kwargs)
每次您从B实例化一个新对象时,它都会初始化a中的所有属性。如果需要属性列表:
y = B(variable="123...")
attrs = y.__dict__.keys()
您是否知道要复制到y
的x
部分的属性?@stephernauch问题是我不知道这些属性,或者更糟糕的是,这些属性可能会在a
的未来版本中发生更改。我知道,使用Python无法直接做到这一点。有多种方法可以做到这一点,但这在很大程度上取决于A
和B
的实现方式。如果您希望B
对象具有A
对象的所有私有字段值,您可以执行:B.\u dict\uuuuu.update(A.\uu dict\uuuu)
。对象a
本身不能被b
x
神奇地“包装”对象已经存在。我不能像你建议的那样创造它