首页 > 解决方案 > 创建多个属性及其名称

问题描述

我是 Python 新手,正在尝试创建一个具有多个属性的类。我想访问如下属性:

measured_dataset.date
measured_dataset.temperature1
measured_dataset.temperature2

属性datetemperature1temperature2将是带有列表的变量:

measured_date = [1,2,3]
measured_dataset = dataset('date', measured_date)

我试图创建一个类,如:

class dataset :

    def __init__(self, name, value = []) :

        self.name = name
        self.parameter = parameter

但不知何故,我只能创建measured_dataset.name.

我怎样才能创造出我想要的东西?

标签: pythonclass

解决方案


您可以使用属性围绕现有属性定义“别名”。

class Dataset :

    def __init__(self, name, values) :
        self.name = name
        self.parameter = parameter

    @property
    def date(self):
        return self.parameter[0]

    @property
    def temperature1(self):
        return self.parameter[1]

    @property
    def temperature2(self):
        return self.parameter[2]

但是,将值存储在列表中似乎很奇怪,因为您将它们作为列表提供。__init__可以解包列表并直接存储属性:

class Dataset:
    def __init__(self, name, values):
        self.name = name
        self.date = values[0]
        self.temperature1 = values[1]
        self.temperature2 = values[2]

甚至更好的是,将这些值命名为参数__init__,并将解包委托给类方法。

class Dataset:
    def __init__(self, name, date, temp1, temp2):
        self.name = name
        self.date = date
        self.temperature1 = temp1
        self.temperature2 = temp2

    @classmethod
    def from_list(cls, name, values):
        return Dataset(name, values[0], values[1], values[2])

推荐阅读