一段很有意思的代码
程序员文章站
2024-03-12 20:28:02
...
class Championship:
def __init__(self):
self.teams = 0
def matches_count(self):
return self.teams * (self.teams - 1) / 2
def add_new_team(self):
self.teams += 1
def team_matches(champ):
champ.teams() - 1
class Company:
def __init__(self, t):
self.teams = t
def company_members(company):
map(lambda team : team.name, company.teams)
def teams():
return 16
c = Championship()
c.teams = teams()
print(c.teams)
在pycharm的官方教学里看到的
那一节是refactor里的rename,感兴趣可以调出来自己试一下。
这段代码里有一个变量是teams
现在要对这个变量重命名
在shift+F6以后,弹出了重命名窗口,之后下面有一个小窗
可以选择删除的变量
一个很有意思的点在于,整个代码有很多个teams,重命名选项并不能选中所有
细看可以发现,有两个类都声明了teams这个变量
二者互不干扰
类之外,有实例化的Championship
如果要对这个实例中的teams重命名,当然会涉及到类声明里的teams(属性),而不会波及到Company里面的属性声明
令人意外的是,两个函数中的属性也会变化
这是因为,函数的输入参数,没有确定是哪个类,因此无论是修改两个类声明中的哪一个,这两个函数都有可能波及到
如果要对当前文本所有同名变量修改(包含该名字的也算),可以直接用 alt + ctrl + shift + J,选中所有。