Python:从导入类调用方法

时间:2013-03-31 20:12:18

标签: python oop class

好吧,我想我之前已经问过我的问题了,但是我真的不知道用哪个词来搜索它,所以如果这是重复的话就道歉。

我的问题是如何从创建当前类实例的类中调用方法?例如,我们有:

class First:
    def __init__(self):
        self.text = "This is a text in First class"
        self.second = Second()

class Second:
    def __init__(self):
        print "How to show self.text from First?"

我现在这样做的方法是在发起self课时First Second作为参数传递self.second = Second(self) Second但我不是确定这是否正确。另外我发现这可以通过使First成为{{1}}的子类来实现,但我仍然不确定这是否是正确的方法。

你可以帮我解答一下吗? 谢谢

1 个答案:

答案 0 :(得分:3)

这是你可以做到的:

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

我担心,以这种方式相互了解并使用彼此属性的对象很可能违反law of demeter或难以区分对方。 区分它们对于编写“好”课程非常重要。 所以要小心处理!

其他解决方案:传递文字:

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

这也很好。 我想要的不仅仅是第一个解决方案。 但是当有更多的参数要来时,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

我认为这也是同步文本的一个很好的解决方案。 但我想不出一个我真正需要它的例子。