我是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是对象引用)->输出
答案 0 :(得分:0)
您可以通过创建字典来欺骗自己:
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)
所以这一切都如您所愿。