使用父类实例创建子类对象

尼卡·梅特雷维利

假设我们有 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章