2
我知道我可以使用'查找用法'来找到在一个类中调用方法的内容。 对于给定类的所有方法,是否有这样的方法? (或者文件中的所有方法)PyCharm:列出一个类的所有方法的所有用法
用例:我试图重构一个神类,它几乎可以肯定是几个类。能够看到神类方法的哪个子集,与它交互的类使用会很好。似乎PyCharm已经完成了这一点,但不让我扩展它。
我使用PyCharm 2016年1月2日
我知道我可以使用'查找用法'来找到在一个类中调用方法的内容。 对于给定类的所有方法,是否有这样的方法? (或者文件中的所有方法)PyCharm:列出一个类的所有方法的所有用法
用例:我试图重构一个神类,它几乎可以肯定是几个类。能够看到神类方法的哪个子集,与它交互的类使用会很好。似乎PyCharm已经完成了这一点,但不让我扩展它。
我使用PyCharm 2016年1月2日
这是可能的,但你必须处理抽象的,否则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()
AFAIK存在PyCharm没有这样的选择。此外,我不确定我能看到这样一个功能的好处:假设你有一个有两种方法的类,并且你有这个功能,并且它会说这两个方法在你的项目中使用了146次。现在让我们说一个方法只用了一次,另一个方法用了145次。数字146意味着什么?你能用这样的信息做什么? – alfasin
我想告诉:[类]使用方法A,[类]使用方法B和/或类A使用[方法],类B使用[不同的方法集],类C使用[另一个不同的方法集]等 然后,我可以更轻松地弄清楚我的上帝课程中是否有不同的功能子集,这将帮助我重构它。 – DeTeReR
我会争辩说,分组应该由具有相关功能的方法组来完成,而不是由用法组成。做清理自顶向下可能会帮助您清理其他类,同时使用原始方法(按使用分组 - 自下而上)可能会在不应耦合的代码模块/类之间产生不必要的耦合。 – alfasin