如果我想定义一个由另一个 class 的实例组成的 class,我应该如何组织我的代码?
How should I organize my code if I want to define a class which consists of instances of another class?
我无法决定如何组织我的代码。我正在为电力系统构建模拟,并想定义一个名为 "Plant" 的 class,其中包含 "Transformer" 和 "Switch" 对象。
我不知道让 class 工厂私有这些对象是否是个好主意。
另外,我不确定应该如何在 "Plant" 对象中组织这些对象;我应该只列出该工厂包含的变压器,还是有更好的方法来组织我的数据?
基本上,我正在寻找关于如何组织由其他 classes 组成的 classes 的建议,或者我在决定这个时应该考虑什么。
哦,顺便说一句,我正在使用 python。
这些方面的内容应该适合您
class Transformer():
def __init__(self, name):
self.name = name
//initfunctions
def other_function(self):
//more fns
class Switch():
def __init__(self):
//initfunctions
def other_function(self):
//more fns
class Plant():
def __init__(self):
self.transformers = []
self.switches = []
def add_transformer(self, transformer):
self.transformers.append(transformer)
def create_transformer(self, name):
self.transformers.append(Transformer(name))
def print_transformers(self):
for trans in self.transformers:
print trans.name
然后您可以在主代码中使用它,例如:
plant = Plant()
trans1 = Transformer('trans1')
plant.add_transformer(trans1)
plant.print_transformers()
这将简单地输出
trans1
听起来您需要更详细地考虑每个对象的用例。您希望如何访问这些对象中的每一个以及您希望进行哪些类型的操作?这将使您更好地了解如何构建代码。至于把属性设为私有,这么早应该没关系吧。
我无法决定如何组织我的代码。我正在为电力系统构建模拟,并想定义一个名为 "Plant" 的 class,其中包含 "Transformer" 和 "Switch" 对象。 我不知道让 class 工厂私有这些对象是否是个好主意。 另外,我不确定应该如何在 "Plant" 对象中组织这些对象;我应该只列出该工厂包含的变压器,还是有更好的方法来组织我的数据?
基本上,我正在寻找关于如何组织由其他 classes 组成的 classes 的建议,或者我在决定这个时应该考虑什么。
哦,顺便说一句,我正在使用 python。
这些方面的内容应该适合您
class Transformer():
def __init__(self, name):
self.name = name
//initfunctions
def other_function(self):
//more fns
class Switch():
def __init__(self):
//initfunctions
def other_function(self):
//more fns
class Plant():
def __init__(self):
self.transformers = []
self.switches = []
def add_transformer(self, transformer):
self.transformers.append(transformer)
def create_transformer(self, name):
self.transformers.append(Transformer(name))
def print_transformers(self):
for trans in self.transformers:
print trans.name
然后您可以在主代码中使用它,例如:
plant = Plant()
trans1 = Transformer('trans1')
plant.add_transformer(trans1)
plant.print_transformers()
这将简单地输出
trans1
听起来您需要更详细地考虑每个对象的用例。您希望如何访问这些对象中的每一个以及您希望进行哪些类型的操作?这将使您更好地了解如何构建代码。至于把属性设为私有,这么早应该没关系吧。