![](/img/trans.png)
[英]How do I get my __str__ method in a class to return this specific value in python
[英]How do I return objects from a class without using the __str__ method?
我正在開發一個程序,該程序接收 CSV 人員文件並返回人口數量。 該文件包含一個表格,其中包含人們的名字、姓氏和 5 個不同的特征(工作、社交、愛好、飲食、睡眠)。 目前,我有一個 Person class ,它接受名字和姓氏作為字符串,特征作為字典。 我還根據他們的特征分布來定義這個人是否有不平衡或平衡的生活。 這個 class 的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方法的情況下返回人 object 嗎?
您的代碼似乎不完整,因為您的population
變量包含元組,而不是Person
object 實例。
如果你有一個Person
實例的列表,然后你打印這些實例,它們的不平衡或平衡狀態會顯示出來,因為print
會打印實例的字符串表示,並且當你定義一個__str__()
方法時,表示會被覆蓋class。
有沒有辦法在不使用 str 方法的情況下返回人 object ?
如果你實例化一個Person
object,比如 aperson aperson = Person(fname, lname, traits)
,那么你可以通過aperson.first_name, aperson.last_name
獲取它的屬性,並使用 `aperson.determine_style 獲取它的余額狀態
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.