python - 创建多个属性及其名称
问题描述
我是 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
但不知何故,我只能创建measured_dataset.name
.
我怎样才能创造出我想要的东西?
解决方案
您可以使用属性围绕现有属性定义“别名”。
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])
推荐阅读
- sql-server - 使用条件格式填充文本框时,SSRS 出现错误。错误 BC30201
- webpack - Object.entries/Object.values 在 IE 11 中未使用 Babel-polyfill 定义
- python - python3 + pygit:“没有名为‘repository’的模块”
- javascript - 防止可穿戴手腕手势关闭屏幕
- elixir - 即使 2019b 已发布,ets.lookup 仍在从 2019a tzdata 文件返回 :tzdata_current_release, :release_version 的旧数据
- vba - 查找文档中是否存在数组中的任何样式
- sql - 找不到列“dbo”或用户定义的函数或聚合“dbo.GetUserBranchIDs”,或者名称不明确
- android - 浓缩咖啡 - 如何进行 2 次手指滑动?
- swift - swift中带有派生类的便利初始化器
- windows - 为什么我的 Web 服务在使用 Windows 身份验证时返回错误 401?