gpt4 book ai didi

parameters - PyCharm 提取参数通常不起作用 : "Cannot perform refactoring using selected element(s)"

转载 作者:行者123 更新时间:2023-12-02 03:12:04 25 4
gpt4 key购买 nike

def my_method(self):
print self.my_field * 2

我希望能够为此添加一个参数,以便在某些其他情况下我可以使用不同的表达式而不是 self.my_field,也许是 self.my_other_fieldself.my_field + 1。我选择 self.my_field 并执行 Refactor > Extract > Parameter。我收到一条错误消息“无法使用所选元素执行重构”。

它应该能够重构,因为 my_method 的调用方式类似于 self.my_method()other_obj.my_method()。它可以将这些更改为 self.my_method(self.my_field)other_obj.my_method(other_obj.my_field)

一般来说,我只能在表达式非常简单(例如常量)时才能使用提取参数功能。如果它是一个依赖于现有参数值的表达式,则它不起作用。我想 self 是现有参数的特例。这只是提取参数的限制,还是我做错了?

最佳答案

看起来你实际上想做的是 refactor through renaming而不是 extracting a new parameter .

您会注意到参数提取的预期功能是修改现有调用以包含您的新参数。但是,根据您在问题中的陈述:

I select self.my_field

您似乎要么不小心选择了方法中的语句,要么试图通过重构修改表达式。 (或者,如果有其他问题,您能否澄清您的预期结果?)在后一种情况下,这将更适合替代重构。

一般来说,通过提取来重构你的代码就是拿一段代码:

def my_method():
返回 1 + 2

并将其内部移动到别处:

def my_method(a=1,b=2):
返回 a + b

在您的代码段中:def my_method(self):
打印(self.my_field * 2)
该方法的主体不具有包容性,因此从语句中提取内容没有意义。相反,您似乎只想在 my_method 的声明中将 self.my_field 替换为 self.my_other_field。同样,由于您的示例的简单性,它有些不清楚。

关于parameters - PyCharm 提取参数通常不起作用 : "Cannot perform refactoring using selected element(s)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39458664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com