假设我们有 A 类,它有一个实例 - x。如何创建 A 类的子类,我可以将 x 作为参数传递并获取其所有参数并将其传递给子类对象。准确地说,我想做这样的事情。
class A:
def __init__(self, parameter1, parameter2):
self.parameter1 = parameter1
self.parameter2 = parameter2
class B(A):
def __init__(self, Ainstance, someParameter):
super().__init__(**Ainstance.__dict__)
self.someParameter = someParameter
x = A(parameter1='1', parameter2='2')
x = B(x, someParameter='3')
print(x.parameter1)
print(x.parameter2)
print(x.someParameter)
目标是创建一个类,我可以在其中获取父类对象的所有参数,并添加我自己的属性。上面代码中的问题是我无法对所有类都这样做,因为并非所有类都有__dict__
属性。
我有这个示例代码,我用它来提醒自己如何构造一个proxy
.
#soProxyPattern
class Example:
def __init__(self):
self.tag_name = 'name'
def foo(self):
return 'foo'
def bar(self, param):
return param
class Container:
def __init__(self, contained):
self.contained = contained
self.user_name = 'username'
def zoo(self):
return 0
def __getattr__(self, item):
if hasattr(self.contained, item):
return getattr(self.contained,item)
#raise item
c = Container(Example())
print(c.zoo())
print(c.foo())
print(c.bar('BAR'))
print(c.tag_name)
print(c.user_name)
输出是:
0
foo
BAR
name
username
这表明Container
可以拥有自己的属性(方法或变量),您可以访问这些属性,而不是所包含实例的所有属性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句