-1

我不明白如何从 python 类中获取字段实例的值。我在 get_person 方法中添加了我需要此代码执行的操作。输出应为 3 或无。

class Digit:
    def __init__(self, digit)
        self.digit = digit
    
    def get_person(self):
        # I want to get the value for the field 'Person' from digit, if 'Person' exists
        # else None
        
        
    
inst1 = Digit('Team=Hawkeye|Weapon=Bow|Person=3')
inst2 = Digit('Comics')

print(inst1.get_person(),
      inst2.get_person())
4

3 回答 3

0

鉴于您的两个示例,您对 Digits 类的用例可能过于广泛。通常,最好让一个类在每个实例中存储相同类型的数据,例如Hawkeye, Bow, 3Thor, Hammer, 3。添加Comics到 inst2 向我表明,有一种更好的方式来拆分你的类,但是如果没有更多关于你的代码实际在做什么的上下文,就很难说清楚。

正如评论中指出的那样,使用字符串来存储这样的信息非常混乱,并且使事情难以管理。更好的方法是使用字典,一种存储名称和值的方法,例如,您的团队、武器和人员值:

class Digit:
    def __init__(self, data):

        self.data = data
    
    def get_person(self):

        if "Person" in self.data.keys():
            return self.data["Person"]
        else:
            return None
    
inst1 = Digit({"Team":"Hawkeye", "Weapon":"Bow", "Person":3})
inst2 = Digit({"Comics":None})

print(inst1.get_person(),
      inst2.get_person())

可以在这里找到一个很好的字典入门指南

于 2021-12-28T23:47:03.693 回答
0

根据您的示例,您没有理由不简单地使用dict

inst1 = dict(Team='Hawkeye', Weapon='Bow', Person=3)
inst2 = dict()

print(inst1.get("Person"), inst2.get("Person"))  # prints '3 None'
于 2021-12-28T23:54:20.433 回答
-2
class Digit: # here you define your class
    def __init__(self, digit):
        self.digit = digit # you initialize (set) your attribute.
    def get_person(self):
        return self.digit # you return the attribute

如果该对象不存在,则无论如何您都无法调用其成员 get_person。

于 2021-12-28T23:35:18.793 回答