簡體   English   中英

如何在不使用 __str__ 方法的情況下從 class 返回對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM