您可以这样做:
class First:
def __init__(self):
self.text = "This is a text in First class"
self.second = Second(self)
class Second:
def __init__(self, first):
self.first = first
print "How to show self.text from First?"
print self.first.text
以这种方式相互了解并使用彼此属性的对象,我担心,很可能会违反德米特法则或使彼此难以区分。并且区分它们对于编写“好”类非常重要。所以要小心处理!
其他解决方案:传递文本:
class First:
def __init__(self):
self.text = "This is a text in First class"
self.second = Second(self.text)
class Second:
def __init__(self, text):
self.text = text
print "How to show self.text from First?"
print self.text
这也很OK。我比第一个解决方案更喜欢它。但是当有更多的参数出现时, text1, text2, text3, ... 这可能是一个新对象。
class First(object):
@property
def text(self):
"get text from self.second"
return self.second.text
def __init__(self):
self.second = Second("This is a text in First class")
print self.text
class Second:
def __init__(self, text):
self.text = text
print "How to show self.text from First?"
print self.text
我认为这对于同步文本来说也是一个很好的解决方案。但我想不出一个我真正需要它的例子。