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

如何在Python类中访问另一个类的属性?

在whenever类中访问whatever类的stuff属性的方法

要在whenever类里使用whatever类实例的self.stuff属性,核心是要拿到一个whatever类的实例对象,下面是几种常见实现方式:

1. 在whenever的方法中直接传入whatever实例

修改whenever类,添加需要访问stuff的方法,让方法接收一个whatever实例参数,之后直接通过实例访问stuff:

class whatever:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.stuff = []
    
    def __str__(self):
        return f"whatever(x={self.x}, y={self.y})"

class whenever:
    def __init__(self, a, b):
        self.a = a
        self.b = b
    
    def use_whatever_stuff(self, whatever_instance):
        # 直接访问传入的whatever实例的stuff属性
        print(whatever_instance.stuff)
        # 也可以对stuff进行修改操作
        whatever_instance.stuff.append("new item")

# 使用示例
w1 = whatever(1, 2)
w2 = whenever(3, 4)
w2.use_whatever_stuff(w1)

2. 在whenever初始化时保存一个whatever实例

如果whenever对象需要长期关联某个whatever实例,可以在whenever的__init__里接收并保存这个实例:

class whatever:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.stuff = []
    
    def __str__(self):
        return f"whatever(x={self.x}, y={self.y})"

class whenever:
    def __init__(self, a, b, whatever_instance):
        self.a = a
        self.b = b
        # 把传入的whatever实例保存为自身属性
        self.whatever_obj = whatever_instance
    
    def access_stuff(self):
        # 通过保存的实例访问stuff
        self.whatever_obj.stuff.append("from whenever")
        print(self.whatever_obj.stuff)

# 使用示例
w1 = whatever(1, 2)
w2 = whenever(3, 4, w1)
w2.access_stuff()

3. 在whenever内部创建whatever实例

如果不需要外部传入,也可以在whenever内部直接创建whatever的实例来使用:

class whatever:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.stuff = []
    
    def __str__(self):
        return f"whatever(x={self.x}, y={self.y})"

class whenever:
    def __init__(self, a, b):
        self.a = a
        self.b = b
        # 在whenever内部创建whatever实例
        self.whatever_obj = whatever(5, 6)
    
    def modify_stuff(self):
        self.whatever_obj.stuff.append("internal item")
        print(self.whatever_obj.stuff)

# 使用示例
w2 = whenever(3, 4)
w2.modify_stuff()

注意:因为stuff是whatever的实例属性(每个实例各自拥有),所以必须通过具体的whatever实例才能访问,不能直接通过whatever.stuff访问(除非把stuff改成类属性,即定义在类里、self之外)。

内容的提问来源于stack exchange,提问作者peterparker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:42:18