如何在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
相关产品推荐
相关产品推荐

