【发布时间】:2020-05-02 02:04:49
【问题描述】:
我正在开发一个程序,该程序接收一个 CSV 文件并返回一个人口。该文件包含一个表格,其中包含人们的名字、姓氏和 5 个不同的特征(工作、社交、爱好、饮食、睡眠)。目前,我有一个 Person 类,它接受名字和姓氏作为字符串,特征作为字典。我还根据他们的特征分布来定义这个人是否有不平衡或平衡的生活。该类的 str 方法用于返回人是不平衡还是平衡,但我还需要创建一个名为人口对象的列表,但它返回的是不平衡或平衡每个人的状态。
class Person:
def __init__(self, first_name, last_name, traits):
self.first_name = str(first_name)
self.last_name = str(last_name)
self.traits = traits
def determine_lifestyle(self):
check = 0
check2 = 0
if(self.traits["Sleep"] != 0 and self.traits["Eat"] != 0):
for val in self.traits.values():
if(val == 3):
check += 1
if(val == 2):
check2 += 1
if(check >= 3 or check2 >= 3):
return True
else:
return False
def __str__(self):
if(self.determine_lifestyle()):
return self.first_name + " " + self.last_name + " has a balanced lifestyle"
else:
return self.first_name + " " + self.last_name + " has an unbalanced lifestyle"
import csv
def read_file(filename):
f = open(filename, 'r')
population = []
reader = csv.reader(f)
next(reader)
for row in reader:
population.append((row[0],row[1],{"Work":row[2],"Hobbies":row[3],"Socialize":row[4],"Eat":row[5],
"Sleep":row[6]}))
return population
有没有什么方法可以不使用str方法返回person对象?
【问题讨论】:
-
__str__不返回人员对象,它用于在打印对象时提供字符串表示。 -
您的代码永远不会创建任何
Person实例,因此不清楚您的问题出在哪里。也许您正在代码的其他部分这样做?看起来您要么想要一个比__str__提供更多信息的__repr__方法,要么您想要用更详细的东西替换__str__并将您的平衡生活方式代码移动到另一个方法中。
标签: python