You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在一个类中调用另一个类的属性?附Python代码报错场景

属性错误修复方案

问题根源

  1. Follower.name访问错误:name是Follower类的实例属性,仅属于具体的对象实例,不能直接通过类名调用。
  2. message_from_follower()方法定义错误:作为实例方法,未声明第一个必传参数self,导致类或实例调用时触发参数不匹配错误。
  3. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:09:21