Parameters PyCharm提取参数通常不起作用:“无法使用所选元素执行重构”
我希望能够在此添加一个参数,以便在其他情况下,我可以使用不同的表达式,而不是self.my_字段,可能是self.my_其他_字段或self.my_字段+1。我选择self.my_字段并执行重构>提取>参数。我收到一个错误,说无法使用所选元素执行重构 它应该能够重构,因为my_方法的调用类似于self.my_方法或其他_obj.my_方法。它可以将这些字段更改为self.my_methodself.my_字段或other_obj.my_methodother_obj.my_字段Parameters PyCharm提取参数通常不起作用:“无法使用所选元素执行重构”,parameters,refactoring,pycharm,Parameters,Refactoring,Pycharm,我希望能够在此添加一个参数,以便在其他情况下,我可以使用不同的表达式,而不是self.my_字段,可能是self.my_其他_字段或self.my_字段+1。我选择self.my_字段并执行重构>提取>参数。我收到一个错误,说无法使用所选元素执行重构 它应该能够重构,因为my_方法的调用类似于self.my_方法或其他_obj.my_方法。它可以将这些字段更改为self.my_methodself.my_字段或other_obj.my_methodother_obj.my_字段 一般来说,我只能
一般来说,我只能在表达式非常简单(如常量)时才能使用提取参数功能。如果它是一个依赖于现有参数值的表达式,则它不起作用。我猜self是现有参数的一个特例。这只是extract参数的一个限制,还是我做错了?看起来您实际上要做的是相反的 您将注意到,参数提取的预期功能是修改现有调用以包含新参数。但是,根据您在问题中所述: 我选择self.my_字段 您可能是无意中选择了方法中的语句,或者试图通过重构来修改表达式。或者,如果有其他问题,您是否可以澄清您的预期结果?在后一种情况下,这更适合于替代重构 通常,通过提取重构代码需要一段代码: def my_方法: 返回1+2 把它的内脏移到别处: 定义我的方法A=1,b=2: 返回a+b 在您的代码片段中: 定义我的自我: printself.my_字段*2
方法的主体是非包容性的,因此从语句中提取是没有意义的。相反,您似乎只想在my_方法声明中用self.my_other_字段替换self.my_字段。同样,由于您的示例很简单,所以有点不清楚。我希望结果是该方法的定义类似于def my_methodself,param:print param*2,并且对self.my_方法的调用被self.my_methodself.my_字段替换。好的,我明白了。我可以通过使用重构工具来实现这一点,它可以向预先存在的方法添加一个参数,并重构预先存在的调用以包含它。是的,好的。它更为手动,因为您必须将要用作默认值的表达式复制到“更改签名”对话框中,然后用新参数的名称替换该表达式。但是谢谢你的努力。
def my_method(self):
print self.my_field * 2