Python - 使用变量的打印方法

时间:2017-02-05 20:36:09

标签: python methods

我在使用变量打印方法时遇到问题。

如果我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__())

1 个答案:

答案 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())