如何在一个类中调用另一个类的属性?附Python代码报错场景
属性错误修复方案
问题根源
Follower.name访问错误:name是Follower类的实例属性,仅属于具体的对象实例,不能直接通过类名调用。message_from_follower()方法定义错误:作为实例方法,未声明第一个必传参数self,导致类或实例调用时触发参数不匹配错误。User.print_details()方法不规范:硬编码全局变量user1,违背面向对象中实例访问自身属性的原则。
修改后的代码
user.py
from follower import f_details class User: def __init__(self, user_email, user_name): self.email = user_email self.name = user_name def print_details(self): # 用self访问当前实例的属性,摆脱全局变量依赖 print(f"user details : {self.name}\n{self.email}") user1 = User("ABC@gmail.com", "ABCDEF") user1.print_details() # 通过已创建的实例f_details访问name属性 print(f_details.name.strip()) # 通过实例调用修复后的方法 f_details.message_from_follower()
follower.py
class Follower: def __init__(self, follower_name, job, loc): self.name = follower_name self.job = job self.location = loc # 添加self参数,符合实例方法的定义规范 def message_from_follower(self): print("Good day") # 创建实例并供外部导入使用 f_details = Follower("XYZ", "teacher", "AUS")
可选方案(类方法调用)
如果需要直接通过类名调用message_from_follower,可以将其改为类方法:
class Follower: def __init__(self, follower_name, job, loc): self.name = follower_name self.job = job self.location = loc @classmethod def message_from_follower(cls): print("Good day") f_details = Follower("XYZ", "teacher", "AUS")
此时在user.py中既可以用Follower.message_from_follower(),也可以用f_details.message_from_follower()调用。
内容的提问来源于stack exchange,提问作者Ssj
相关产品推荐
相关产品推荐

