给定Python中两个不同类的实例,我想将它们组合起来,生成一个具有组合对象“内存”的新对象,或者生成一个保留其初始属性但开发新属性的修改实例(如本文所述)
显然,下面的例子很愚蠢,但只是出于解释目的
因此,我有一个对象foo
(类MainObject
),它应该与类OneNumber
(这里,a
,b
和c
)的不同实例相结合。我需要:
a
、b
和c
)或初始字段(的
foo
)不变李>OneNumber
和MainObject
实例来使用它们的字段并生成新的内容,这里通过self.getNewNumber
方法)李>a
对foo
]组合,“第二”表示[b
对foo
]组合,等等)李>为了解决上述3个问题,我创建了一个字典来存储各个组合。那么,如何理想地创建关键点呢?显然,这是次优的。为OneNumber
类提供一个self.name
字段可能是一个更好的(?)选项
但我相信真正的程序员一定有更好的方法来完成这一切,对吗
例如,创建一个新的“组合”类(一个OneNumber
实例和一个MainObject
实例作为参数传递——三次创建三个新对象)会更好吗
class OneNumber():
def __init__(self, n):
self.number = n
class MainObject():
def __init__(self, n):
self.number = n
self.dic = {}
self.newnumber = {}
self.keys = ['3rd', '2dn', '1st']
def combineOneNumber(self, onenum):
combname = self.keys.pop()
self.dic[combname] = onenum
self.getNewNumber(combname)
def getNewNumber(self, combname):
self.newnumber[combname] = self.number + self.dic[combname].number
a = OneNumber(8)
b = OneNumber(13)
c = OneNumber(23)
foo = MainObject(2)
foo.combineOneNumber(a)
foo.combineOneNumber(b)
foo.combineOneNumber(c)
print(foo.newnumber)
# {'1st': 10, '2dn': 15, '3rd': 25}
我实际上不知道这个代码的目的。但是我更改了代码的某些部分,这可能会有所帮助。如果您想编写更干净的代码,我建议您阅读“干净的代码”和“python技巧”。😃
相关问题 更多 >
编程相关推荐