Python format()传递一个对象
发布时间:2020-12-20 13:00:25 所属栏目:Python 来源:网络整理
导读:如果我在 Python中定义以下自定义类: class Test: hey = 'ho' yo = 'go' fo = 'sho' 有没有办法使用字符串format()方法只需要传入我的对象一次,然后在所有参数中访问它.理想情况下,我希望能够做到这样的事情: test_class = Test()print "Hey {0.hey},let's
如果我在
Python中定义以下自定义类:
class Test: hey = 'ho' yo = 'go' fo = 'sho' 有没有办法使用字符串format()方法只需要传入我的对象一次,然后在所有参数中访问它.理想情况下,我希望能够做到这样的事情: test_class = Test() print "Hey {0.hey},let's {1.yo}. Fo' {2.sho}".format(test_class) 但我必须这样做: test_class = Test() print "Hey {0.hey},let's {1.yo}. Fo' {2.sho}".format(test_class,test_class,test_class) 解决方法
正如您自己发现的那样,您可以使用关键字参数,但您甚至不必这样做:
In [4]: print("Hey {0.hey},let's {0.yo}. Fo' {0.fo}".format(t)) Hey ho,let's go. Fo' sho In [5]: class Test: ...: hey = 'ho' ...: yo = 'go' ...: fo = 'sho' ...: In [6]: t = Test() In [7]: print("Hey {0.hey},let's go. Fo' sho 0指的是格式的第0个参数,问题是你没有第一个和第二个参数,因为你不需要它. 旁边警告: 此外,由于你似乎从其他语言来到python,你可能会犯一个常见的错误.请注意您定义类的方式; class Test: hey = 'ho' yo = 'go' fo = 'sho' 仅使用类级变量,它将像静态成员一样从其他语言中借用术语.换句话说,hey,yo和fo不是实例属性,尽管您的实例可以访问类级命名空间.查看this answer.当然,这对于这个问题的目的无关紧要,但如果您不理解类定义的语义,它可能会导致错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |