我在這裏有一些有趣的請求。假設我有一個名爲Object的類,它有兩個方法,func1()和func2()。第二種方法調用func1(),儘管我希望能夠改變func1()的函數定義,以便能夠區分從func2()內被調用作爲我的Object類的獨立方法,就像這樣:在一個類內調用python函數
obj = Object()
obj.func1()
我可以簡單地創建函數的兩個版本(一個私有方法,用於FUNC2()來使用,並且用戶能夠訪問一個公共的方法;是的,我知道,在蟒蛇真的有不是私人的,但是我認爲正常的命名約定,我可以明確表示它只是一個內部函數)。但是這需要相當多的冗餘,而且我想盡可能避免。有沒有人可以推薦這種類型的機制或策略?
例如,我知道如果我希望我的整個腳本object.py執行一組特定的代碼(如果只作爲獨立腳本運行的話)(即它不會被導入到另一個腳本的頂部),我會做:
if __name__ == "__main__":
...
code to run if standalone
...
我想知道是否有一個類的方法類似的策略。
這是不可能的,不可能以非hacky的方式。你爲什麼覺得你需要這樣做?除了創建單獨的方法之外,另一種可能性是向函數添加一個參數,func2可以在調用它來指示「內部」使用時使用該參數。 – BrenBarn
訣竅是將冗餘代碼分解爲兩個可以使用的單獨「通用」函數。 – mgilson
我覺得我需要這樣做,因爲以某種方式調用,我想生成終端輸出,而如果此功能在內部調用,我希望它放棄打印到終端。 – astromax