将现有实例用作父实例

嗨,我正在寻找一种方法,将__init_设置为
类绑定到现有实例.这是我的一个最小的例子
试着做:
A类(对象):
Def__init__(self,x):
Self.x=x
B(A)类:
Def__init__(self,*args):
如果不是isInstance(args[0],A):
Super(B,self).__init__(args[0])
其他:
SELF=参数[0]
Self.y=参数[1]
B=B(4,6)
打印'b:',b.x,b.y,类型(B)
A=A(7)
C=B(a,3)#表示:请设置c个家长的使用实例"a"
打印'c:',c.x,c.y,类型(C)
这并不像可以测试的那样起作用.我之所以要找一个
这方面的解决方案是,在我们的项目中,"A"是不可复制的(它
是使用到C++对象的bost.python绑定编写的,该对象不
允许复制)-所以我不能简单地在"B's__init__()"中调用一个
复制A的构造函数.
有什么想法吗?

# 回答1


安德烈·阿克里特:
???对不起,我就是搞不懂这件事.
重新绑定参数仅影响当前命名空间.
好的,我想我明白了……当A实例作为第一个实例传递时
Arg,您要使用此实例的状态来调用Super(B).__init__?
如果是这样,这里有一个可能的解决方案(Q&D,根据以下内容进行更正
真实用例等):
导入副本
B(A)类:
Def__init__(self,*args):
如果是实例(args[0],A):
X=Copy.Copy(args[0].x)#如果它是可变的并且您想要一个副本
其他:
X=args[0]
超级(B,自身).__init__(X)
Self.y=参数[1]
一定要仔细阅读复印件的文档.

标签: python

添加新评论