如何定义具有变量属性的类

时间:2011-08-12 08:10:09

标签: python class

我正在使用定义为zonesystem的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

但这显然不起作用。

3 个答案:

答案 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是可以的,但我会说明确传递一个区域列表会更清楚。这样,如果需要,您可以在将来添加不同的命名参数。

相关问题