Python中如何在其他类的方法内修改目标类的类变量
实现方案
你现在在change_company_name方法里写的Company.name = "xxx"赋值逻辑,本身完全可以实现对Company类类变量的修改,当前实现失效的核心原因是写在方法内的代码没有被实际调用执行。
只要按照正常的方法调用流程触发方法内的赋值操作,就能达到修改效果,完整可运行的代码示例如下:
class Company: name = "A Company name" def __init__(self, num_of_employees, found_year): self.num_of_employees = num_of_employees self.found_year = found_year class Owner: # 类作用域下直接赋值修改Company类变量的逻辑本身是生效的 Company.name = "I know that here is changing the Company name" def change_company_name(self): # 方法内通过类名直接修改类变量,和类作用域下的修改逻辑完全等价 Company.name = "Another Company Name" # 实例化Owner对象 current_owner = Owner() # 调用修改方法,触发内部的变量赋值逻辑 current_owner.change_company_name() # 打印验证结果,输出为 "Another Company Name" print(Company.name)
容易踩的坑
- 如果在方法内误写成
self.name = "xxx",只会给当前Owner实例生成一个独立的实例属性,根本不会触碰到Company的类变量,一定要严格通过Company.类变量名的访问形式修改。 - 如果不想依赖Owner实例、想直接通过类调用修改方法,可以把方法改成静态方法/类方法,省去实例化的步骤:
这种写法下直接调用@staticmethod def change_company_name(): Company.name = "Another Company Name"Owner.change_company_name()就能完成修改,不需要先创建Owner对象。
内容的提问来源于stack exchange,提问作者tallcoder
相关产品推荐
相关产品推荐

