我正在使用定义为zone
和system
的2个类。 system
应该包含多个区域,但数量可能会有所不同。所以,我已经定义了类zone
,例如:
class zone(object):
def __init__ (self,
nameZone = None,
height = None,
width = None):
self.nameZone = nameZone
self.height = height
self.width = width
和班级system
如下:
class system(object):
def __init__(self,
SystemName = None,
NumberOfZones = None,
zone = None):
self.SystemName = SystemName
self.NumberOfZones = NumberOfZones
self.zone = zone
例如,我想知道如何使用可变数量的参数定义类SYSTEM?比如我可以:
building = system(2, apart1, apart2)
building2 = system(3, apart1,apart2,apart3)
当然,apart1,2和3被定义为类zone
。
我尝试过类似的事情:
for i in range(self.NumberOfZones)
self.zone = zone
但这显然不起作用。
答案 0 :(得分:0)
您可以使用变量args功能。
class system(object):
def __init__(self, SystemName, *zones):
self.SystemName = SystemName
self.zones = list(zones)
# The number of zones is the length of the zones list.
然后你可以放任何数字,甚至不必指定多少。 Python将只收集名称后面的所有参数。
答案 1 :(得分:0)
class System(object):
def __init__(self, system_name = None, *zones):
self.system_name = system_name
self.number_of_zones = len(zones)
self.zones = zones
我稍微清理了PEP8并留在了number_of_zones。
答案 2 :(得分:0)
使用varargs是可以的,但我会说明确传递一个区域列表会更清楚。这样,如果需要,您可以在将来添加不同的命名参数。