如何使用现有对象和python中的新参数值初始化新python对象?
以下是我的代码片段:-如何使用现有对象和python中的新参数值初始化新python对象?,python,oop,Python,Oop,以下是我的代码片段:- class Board: def __init__(self,level): self.lvl=level self.val=0 class State: def __init__(self): self.p=Board(0) self.p.val=100 self.u=self.p 我希望u的级别为1,val为100。我知道我可以单独修改,但我想在初始化u和级别值1时传递p
class Board:
def __init__(self,level):
self.lvl=level
self.val=0
class State:
def __init__(self):
self.p=Board(0)
self.p.val=100
self.u=self.p
我希望u的级别为1,val为100。我知道我可以单独修改,但我想在初始化u和级别值1时传递p的引用。
像self.u=Board(1)这样的东西解决不了我的目的。经过多次尝试,我认为可以使用复制构造函数。但我认为,如果引用传递或任何简单的方法存在,它将是有效的
class Board:
def __init__(self,level,orig=None):
if orig is None:
self.val=0
else:
self.val=orig.val
self.lvl=level
class State:
def __init__(self):
self.p=Board(0)
self.p.val=100
self.u=Board(1,self.p)
使
Board
接受val
作为第二个参数self.u=Board(1100)
…?!没错,但我想把p的引用传递给u,这样u.val=p.val。那么…self.p=self.u=Board(01100)
…?!但是为什么一开始就有两个对同一个对象的引用呢?不清楚您是否希望u.val
和p.val
具有相同的初始值,但独立地改变,或者如果您要求的是每当p.val
改变u.val
相应地改变…self.p=self.u=Board(0,100)
如果我使用的是带有递归的列表或任何其他结构,这实际上会出错。简单地说,u的状态必须与p的状态相同,且级别为+1。