我需要创建一个对象系统,而系统又包含对象,例如:
class A(object):
def __init__(self):
self.A = 'Message from class A'
class B(object):
def __init__(self):
self.B = A()
或以这种方式做到
class B(object):
def __init__(self):
self.B = A()
class A(object):
def __init__(self):
self.A = 'Message from class A'
所以我不能像
一样使用它>>> C = B()
>>> print C.B.A
# Message from class A
这两者的最佳选择是什么,或者如果有其他的话,请欢迎!
编辑1 当前代码
class Foam(object):
def __init__(self, rotor, path='OpenFoamCase'):
self.dirs = {}
self.path = path
self.rotor = rotor
self.rotorObj = Rotor(rotor)
# OpenFoam case directories
self.dirs['main'] = path if path.endswith('/') else path + '/'
self.dirs['system'] = path + '/system/'
self.dirs['constant'] = path + '/constant/'
self.dirs['geometry'] = path + '/geometry/'
self.dirs['polyMesh'] = path + '/constant/polyMesh/'
self.dirs['triSurface'] = path + '/constant/triSurface/'
self.__openFoamInit()
self.mesh = OpenFoamBlockMesh(self)
class OpenFoamBlockMesh(object):
def __init__(self, study):
self.airfoil_offset = 0.5
self.rotor_disk_length = [20, 20]
...
def box(self):
...
所以现在我用它作为:
study = Foam(rotor=rotor, path='OpenFoamCase_Tesis')
study.mesh.airfoil_offset = 0.02
study.mesh.rotor_disk_length = [2, 2.5]
study.mesh.box()
答案 0 :(得分:1)
这实际上取决于你的目的。如果A
类只是B
的辅助类,并且是一个简单的小类,则可以使用第二种方法(内部类)。
如果类A
可能用于其他类或是一个大类,建议使用第一种方法(简单组合)。
如果您提供更好的现实世界问题示例,我们可以为您提供更多帮助。