欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一段很有意思的代码

程序员文章站 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,选中所有。

相关标签: python