【发布时间】:2014-01-28 09:53:49
【问题描述】:
我有许多相同类的对象,每个对象都保存不同的数据。
但是,它们有许多应该是“通用”的属性 - 即在所有对象中设置为相同的值。 (这可能是一个数值、对另一个对象的引用等)
有哪些不同的实现方法? 我想到的几种方法:
包含所有对象和公共属性作为单独的键/值对的字典。这里的问题是对象是动态创建的(从文件中读取的对象数量可变)所以创建键可能是一个问题
一个“集合”类,其中公共属性在此集合类中定义,对象组作为列表传入
我不禁觉得可能有替代品,或者“更好”的方法(我知道这是主观的,但我想知道所有的可能性......)
编辑:。
这是我的具体例子。
我有许多对象,每个对象都定义了一条河流的分支(从现在开始称为Branches。所以,它们都有不同的 x,y 点属性。
它们都应该“链接”到另一个对象,在本例中是一个描述域上海拔的对象(从现在开始称为DEM)
一种方法可以是一个“收集器”类(称为Network),它将所有Branches 对象组合在一起,并具有一个对DEM 的引用的属性。
这样,我可以在所有使用Branches 的计算中安全地使用DEM。然而,这并不理想。我希望每个Branches 对象都有一个返回每个点的高程的方法。为此,DEM 需要传递给Branches 方法(这意味着我不能将该方法定义为我想做的属性)或者每个Branches 对象中都需要有一个属性指向DEM。第二种方法存在允许在每个Branches 对象中引用DEM 的单独实例的风险,我不会不允许这样做。让每个 Branches 对象持有对同一事物的单独引用似乎也有点愚蠢(最好使用 1 个全局引用 - 这样我可以更改它而无需遍历每个 Branches 对象)。
我发现这种事情到处都是——我有很多同一个对象的实例,但我想保持它们之间的一些共同属性——所以更一般的答案是首选..
【问题讨论】:
-
你的案例有点太抽象了。你能举一个更具体的例子来说明你想要完成的事情吗?
标签: python oop dictionary attributes