如何让Python类的所有实例返回首个实例的属性值?
实现Capital类多实例共享首个初始化值的方案
要让所有Capital实例调用name()方法都返回第一个实例传入的城市名,同时允许创建多个实例不抛出异常,可以通过类变量存储初始值的方式实现,修改后的代码如下:
修改后的Capital类
class Capital: # 类变量:存储第一个传入的城市名,初始为None _first_city = None def __init__(self, city_name): # 仅在类变量未被初始化时,设置首个城市名 if Capital._first_city is None: Capital._first_city = city_name def name(self): # 返回类变量保存的首个城市名 return Capital._first_city
测试验证
运行以下实例化代码:
capital_1 = Capital("London") capital_2 = Capital("Madrid") capital_3 = Capital("Paris") print(capital_2.name() == "London") # 输出 True print(capital_3.name() == "London") # 输出 True
核心逻辑说明
- 使用类变量
_first_city替代实例变量存储城市名,类变量属于整个类,所有实例共享其值。 - 初始化方法
__init__仅在类变量未被赋值时(即第一个实例创建时)设置城市名,后续实例的初始化不会覆盖这个值。 name()方法直接返回类变量的值,确保所有实例调用都返回第一个传入的城市名。- 完全允许创建多个实例,不会抛出任何异常,满足需求。
内容的提问来源于stack exchange,提问作者DDela
相关产品推荐
相关产品推荐

