方法调用python的来源

时间:2017-02-22 08:46:47

标签: python oop

如何查看课堂上或课堂外的来电? e.g。

class Test:

    def dog(self):
        #Call from inside of the class
        self.cat()

    def cat(self):
        #how to check if call is made from inside the class or outside?
        return

#Call from outside of the class
Test().cat()

P.S。没有进口任何东西。

2 个答案:

答案 0 :(得分:1)

  

基本上,当从类内部进行调用时,我只想执行cat方法的一部分。就是这样。

听起来你的功能太多了,你最好把它分成不同的功能

def dog(self):
    #Call from inside of the class
    pet_cat()
    chase_cat()

def cat(self):
    feed_cat()
    pet_cat()
    chase_cat()
    return

def feed_cat():
    pass
def pet_cat():
    pass
def chase_cat():
    pass

在回答你的直接问题时,你不仅可以运行部分方法 - 这是一个坏主意,所有可能允许你这样做的选项都是肮脏的黑客

答案 1 :(得分:0)

不导入,只需将调用者作为参数传递:

class Test():
    def dog():
        self.cat(self)
    def cat(caller=None):
        if caller == self:
            print "inner call"
        else:
            print "outside call"