2016-05-04 87 views
2

我知道我可以使用'查找用法'來找到在一個類中調用方法的內容。 對於給定類的所有方法,是否有這樣的方法? (或者文件中的所有方法)PyCharm:列出一個類的所有方法的所有用法

用例:我試圖重構一個神類,它幾乎可以肯定是幾個類。能夠看到神類方法的哪個子集,與它交互的類使用會很好。似乎PyCharm已經完成了這一點,但不讓我擴展它。

我使用PyCharm 2016年1月2日

https://intellij-support.jetbrains.com/hc/en-us/community/posts/206666319-See-all-callers-of-all-methods-of-a-class

+0

AFAIK存在PyCharm沒有這樣的選擇。此外,我不確定我能看到這樣一個功能的好處:假設你有一個有兩種方法的類,並且你有這個功能,並且它會說這兩個方法在你的項目中使用了146次。現在讓我們說一個方法只用了一次,另一個方法用了145次。數字146意味着什麼?你能用這樣的信息做什麼? – alfasin

+0

我想告訴:[類]使用方法A,[類]使用方法B和/或類A使用[方法],類B使用[不同的方法集],類C使用[另一個不同的方法集]等 然後,我可以更輕鬆地弄清楚我的上帝課程中是否有不同的功能子集,這將幫助我重構它。 – DeTeReR

+0

我會爭辯說,分組應該由具有相關功能的方法組來完成,而不是由用法組成。做清理自頂向下可能會幫助您清理其他類,同時使用原始方法(按使用分組 - 自下而上)可能會在不應耦合的代碼模塊/類之間產生不必要的耦合。 – alfasin

回答

-1

這是可能的,但你必須處理抽象的,否則Pycharm不知道問題的方法屬於你的特定類。 AKA - Type Hinting

在沒有類型提示的抽象層中調用該方法的任何實例都不會被找到。

實施例:

#The class which has the method you're searching for. 
class Inst(object): 
    def mymethod(self): 
     return 

#not the class your looking for, but it too has a method of the same name. 
class SomethingElse(object): 
    def mymethod(self): 
     return 

#Option 1 -- Assert hinting 
def foo(inst): 
    assert isinstance(inst, Inst) 
    inst.mymethod() 

#Option 2 -- docstring hinting 
def bar(inst): 
    """ 

    :param inst: 
    :type inst: Inst 
    :return: 
    :rtype: 
    """ 
    inst.mymethod() 
相關問題