在 elif 之后的行中,我将参数 text 分配给 self 。徒劳地尝试覆盖/复制当前实例。
class Someclass(object):
def __init__(self, text):
if type(text) == type(""):
self._get_lines(text)
self._parse_stats()
elif type(text) == type(self):
self = text
else:
raise TypeError()
自我已分配,但仅限于 init ()
的范围内是否可以以这种方式复制实例(或similair),或者我是否需要将每个实例变量复制到新实例。我该如何归还?
答案 0 :(得分:2)
覆盖self
不会影响实例本身。您可以通过覆盖__new__
来返回构造函数中的不同对象。
def SomeClass(object):
def __new__(cls, text):
if isinstance(text, SomeClass):
#return a copy of text. maybe..
return copy.copy(text)
elif isinstance(text, basestring):
#return a new instance. __init__ will handle the rest
return super(SomeClass, cls).__new__(text)
else:
raise TypeError
def __init__(self, text):
....