我在打印带有变量的方法时遇到问题。
如果我使用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__())发布于 2017-02-06 04:44:48
尝试以下方法:
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())https://stackoverflow.com/questions/42057012
复制相似问题