我在使用变量打印方法时遇到问题。
如果我print (pet.__str__())
,它会按预期工作。但是,我试图使用变量来代替" pet"用变量。我然后将它分配给变量并尝试打印它。当我打印它时,它实际上打印字符串pet.__str__()
而不是调用方法。我不确定我做错了什么。这是我的代码的一般概述。感谢
pet = Pet('Taz')
my_list = ["pet", "dog", "big_dog", "small_dog"]
my_string = ["animal_variable.__str__()", "animal_variable.kind", "animal_variable.color", "animal_variable.do_tricks()"]
sentence1 = []
sentence1 = my_string[0]
print (sentence1) #DEBUGGING*****************************************
print (sentence1.replace('animal_variable', my_list[0]))
print (type(sentence1))
***在这里,我得到了输出*******
animal_variable.__str__()
pet.__str__(),
class 'str'
***如果我这样做,它按预期工作,但这不允许我循环遍历列表中的不同变量
print (pet.__str__())
答案 0 :(得分:1)
试试这个方法:
my_list = ["pet", "dog", "big_dog", "small_dog"]
for pet in map(Pet, my_list):
print ("{}, Kind: {}, Color: {}\nTricks: {}".format(str(pet), pet.kind, pet.color, pet.do_tricks()))
如果您已经有动物列表,那么只需将上面的for循环替换为:
for pet in my_list:
另一种使用方法是覆盖类的__str__
方法,以返回上述方法。类似的东西:
def __str__(self):
return "Kind: {}, Color: {}\nTricks: {}".format(self.kind, self.color, self.do_tricks())