python - 有没有办法在python中访问另一个对象的属性
问题描述
我正在尝试创建三个类,一个主要存储一个人的属性,另外两个将访问一个人的实例并做很多事情来调整它的属性值。
我想以单独的方式保存它们,以便轻松管理每个类中的内容并进行扩展。我认为这不是继承问题,所以我的代码显然是错误的目标,但我不知道应该做什么。
class CreatePerson():
def __init__(self):
self.to_do_list=[]
class Shop(CreatePerson):
def __init__(self,CreatePerson):
super().__init__()
def add_element(self,a):
self.to_do_list+=[a]
class Recreation(CreatePerson):
def __init__(self,CreatePerson):
super().__init__()
def add_element(self,a):
self.to_do_list+=[a]
if __name__ == '__main__':
joe=CreatePerson()
p1=Shop(joe)
p2=Recreation(joe)
p1.add_element('whole milk')
p2.add_element('reading book')
print(joe.to_do_list)
我希望它可以返回关注,但显然它没有链接
['whole milk','reading book']
解决方案
如果我理解正确,您希望您的Shop
和Recreation
对象共享其基础CreatePerson
对象。但是您的代码没有这样做。如@mike scotty
评论所述,您传入Joe
,但不要将 Joe 用于任何事情。所以这些新对象只是创建自己的to_do_lists
,而不是共享的。这是我想象的你想要的东西:
class CreatePerson():
def __init__(self):
self.to_do_list = []
def add_element(self, a):
self.to_do_list += [a]
class Shop():
def __init__(self, CreatePerson):
self.my_person = CreatePerson
def add_element(self, a):
self.my_person.add_element(a)
class Recreation():
def __init__(self, CreatePerson):
self.my_person = CreatePerson
def add_element(self, a):
self.my_person.add_element(a)
>>> joe=CreatePerson()
>>> p1=Shop(joe)
>>> p2=Recreation(joe)
>>> p1.add_element('whole milk')
>>> p2.add_element('reading book')
>>> print(joe.to_do_list)
['whole milk', 'reading book']
所以现在 Shop 和 Recreation 不是 a 的实例CreatePerson
,但它们确实CreatePerson
在其构造函数中采用 a ,并存储对该人的引用。当你调用add_element
这些对象时,它们会调用add_element
它们拥有的新方法CreatePerson
。
我只想指出,我认为这不是完全正确的抽象——你的商店只有一个人,你的娱乐也是如此。但为了回答这个问题,我只是从表面上看。
希望对您有所帮助,快乐编码!
推荐阅读
- sql - IBatis2动态更新查询执行
- rust - 如何仅向其兄弟姐妹和父级公开方法,但不向使用 rust 中的箱子的客户公开
- pytorch - 堆叠/连接张量会增加内存使用量
- javascript - Mongoose 通过包含子数组的参数查找
- python - 如何在 Python 中将 JSON 对象元素分成单独的数组?
- swiftui - 如何在天或小时或秒 swiftUI 中转换用户编号
- numpy - 在 NumPy 数组的每一列中找到两个最小值的最快方法
- image - firestore 图像未加载到个人资料页面
- c - 我必须从这个 if 语句中理解什么
- r - 使用 r 将 Windows 时间转换为可读格式?