有没有办法从属性打印类的实例?

2024-09-25 10:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python(以及一般的编码)还比较陌生,我想知道如果知道对象的属性,是否有一种方法可以打印/查找对象。例如,如果我有这样一个类:

class Employee:
    def __init__(self, nameLast, nameFirst, age, sex):
        self.nameLast = nameLast
        self.nameFirst = nameFirst
        self.age = age
        self.sex = sex
e1 = Employee("Doe", "John", 35, "male")
e2 = Employee("Donevan", "Jane", 32, "female")
e3 = Employee("McHipster", "Ron", 26, "male")

我知道一个姓,例如"Doe",我可以用它来获取、打印或存储实例"e1"。你知道吗

mystery_function("Doe")
# Output: e1

就像我说的,我是新的编码,所以我可能会错过一些简单的东西,但我已经在网上搜索了几个小时的解决方案,但我没有任何运气。你知道吗

编辑:

所以,我觉得我需要解释我想做的其他事情。一旦我得到了实例e1,我就需要在下一个函数中使用它。你知道吗

其思想是,当用户搜索一个名称(例如Doe)时,程序需要定位对象以便在下一个函数中使用它。。。比如:

def func_next(e): # Where e1 is the output from the previous bit
    print("Hi my name is " + e.nameLast + ", " + e.nameFirst + ", a "
          + str(e.age) + " year old " + e.sex + " working at Company X.")
func_next(e1)
# Hi my name is Doe, John, a 35 year old male working at Company X.

我希望这有意义。据我所知,e1不能是字符串,因为它在后续函数中不起作用。我列出的代码是一个(无可否认是愚蠢的)示例,但它传达了我要做的:

输入(对象的字符串和属性)-->;对象引用(例如e1)-->;function(e)(其中e是对象引用)-->;输出


Tags: 对象函数gtself编码age属性is
1条回答
网友
1楼 · 发布于 2024-09-25 10:27:54

你可以通过创建一本字典来欺骗自己:

dct = {e1.nameLast: "e1", e2.nameLast: "e2", e3.nameLast: "e13"}
print(dct["Doe"])
# e1

这可能不是最好的表示您的数据作为一个字典,虽然。。。这可能更适合:

dct = {e.nameLast: e for e in (e1, e2, e3)}
employee_doe = dct["Doe"]
print(employee_doe)

为了有一个好的输出,您应该向类中添加一个__str__方法。你知道吗


回答您的更新:

dct = {e.nameLast: e for e in (e1, e2, e3)}
employee_doe = dct["Doe"]
func_next(employee_doe)

所以这一切都如你所料。你知道吗

相关问题 更多 >