类的Python数据结构因年份而异
我有一门课是这样的类的Python数据结构因年份而异,python,python-3.x,Python,Python 3.x,我有一门课是这样的 class person: def __init__(self, name): self.name = name self.carData = "" self.HouseData = "" #other assets for someone in person: someone.carData = runCarQuery() someone.HouseData =
class person:
def __init__(self, name):
self.name = name
self.carData = ""
self.HouseData = ""
#other assets
for someone in person:
someone.carData = runCarQuery()
someone.HouseData = runHouseQuery()
#load other assets
我正在加载这样的数据
class person:
def __init__(self, name):
self.name = name
self.carData = ""
self.HouseData = ""
#other assets
for someone in person:
someone.carData = runCarQuery()
someone.HouseData = runHouseQuery()
#load other assets
但数据每年都会有所不同,例如2019年、2020年等,我正在努力想象一种在数据结构中表示这一点的适当方式。我知道理论上我可以这么做
class person:
def __init__(self, name):
self.name = name
self.carData2019 = ""
self.HouseData2019 = ""
self.carData2020 = ""
self.HouseData2020 = ""
#other assets
但它感觉非常笨拙,所以我希望有一种方法可以指向2019年版本的carData对象。例如,支持以下内容的数据模型
for someone in person:
someone.carData['2019'] = runCarQuery('2019')
someone.carData['2020'] = runCarQuery('2020')
someone.HouseData['2019'] = runHouseQuery('2019')
someone.HouseData['2020'] = runHouseQuery('2020')
#load other assets
我知道这是无效的,但我对如何用python实现该场景有点迷茫 你的意思是:
# __init__
…
someone.carData = {}
someone.HouseData = {}
然后:
for someone in person:
for year in (2019, 2020):
someone.carData[year] = runCarQuery(year)
someone.HouseData[year] = runHouseQuery(year)
你的意思是:
# __init__
…
someone.carData = {}
someone.HouseData = {}
然后:
for someone in person:
for year in (2019, 2020):
someone.carData[year] = runCarQuery(year)
someone.HouseData[year] = runHouseQuery(year)
?您可以使用@property
您可以使用@property
您可以创建一个为您执行筛选的方法:
class Person:
def __init__(self, name):
self.name = name
self.car_data = []
self.house_data = []
def car_by_year(self, year):
return filter(lambda x: x['date'].year() == year, self.car_data)
def house_by_year(self, year):
return filter(lambda x: x['date'].year() == year, self.house_data)
您必须在car\u data
和house\u data
对象中获得一些数据结构,可能需要一个字典来存储年份或日期值
p = Person('John')
p.car_data.append({'date': date(2018, 01, 01), 'model': 'Ford'})
for car in p.car_by_year(2018):
print(car)
您可以创建一个为您执行筛选的方法:
class Person:
def __init__(self, name):
self.name = name
self.car_data = []
self.house_data = []
def car_by_year(self, year):
return filter(lambda x: x['date'].year() == year, self.car_data)
def house_by_year(self, year):
return filter(lambda x: x['date'].year() == year, self.house_data)
您必须在car\u data
和house\u data
对象中获得一些数据结构,可能需要一个字典来存储年份或日期值
p = Person('John')
p.car_data.append({'date': date(2018, 01, 01), 'model': 'Ford'})
for car in p.car_by_year(2018):
print(car)
将其存储在字典中,其中键表示年份,值表示该年份的数据。“但数据因年份而异,例如2019年、2020年等”,这意味着什么?如何变化?将其存储在字典中,其中键是年份,值是该年份的数据。“但数据因年份而异,例如2019年、2020年等”,这意味着什么?如何变化?