Python 创建多个属性及其名称

Python 创建多个属性及其名称,python,class,Python,Class,我是Python新手,正在尝试创建一个具有多个属性的类。 我希望访问以下属性: measured_dataset.date measured_dataset.temperature1 measured_dataset.temperature2 属性date、temperature1和temperature2将是带有列表的变量: measured_date = [1,2,3] measured_dataset = dataset('date', measured_date) 我尝试创建一个类,

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

measured_dataset.date
measured_dataset.temperature1
measured_dataset.temperature2
属性date、temperature1和temperature2将是带有列表的变量:

measured_date = [1,2,3]
measured_dataset = dataset('date', measured_date)
我尝试创建一个类,如:

class dataset :

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

        self.name = name
        self.parameter = parameter
但不知何故,我只能创建测量的_dataset.name


如何创建所需的内容?

您不能用一种方法命名类属性,然后尝试用另一种名称获取它们。您可以这样做:

class Dataset :

    def __init__(self, date, temperature1, temperature2) :
        self.date = date
        self.temperature1 = temperature1
        self.temperature2 = temperature2

measrued_dataset = Dataset('2020-01-26', 100, 200)
在一般情况下,您应该避免这样做,同时动态地执行相同的操作:

class Dataset:
    def __init__(self, **kwdargs):
        self.__dict__.update(kwdargs)

measrued_dataset = Dataset(date='2020-01-26', temperature1=100, temperature2=200)

可以使用特性围绕现有属性定义别名

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_u;可以解包列表并直接存储属性:

class Dataset:
    def __init__(self, name, values):
        self.name = name
        self.date = values[0]
        self.temperature1 = values[1]
        self.temperature2 = values[2]
或者更好的方法是,将这些名为parameters的值设为uuu init_uuuu,并将解包委托给类方法

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])

self.parameter=参数→ NameError:未定义名称“parameter”。类名应遵循小写字母\u加下划线的样式。您正在使用列表作为默认参数,请小心!