如何解决无法使用.format打印类功能返回
我有一个类(名为MyClass)和一个函数(名为MyFunct)。
当我打印它时,可以,但是当我使用.format时,我会遇到一些问题:
class MyClass:
var = 2
def MyFunct(numb):
return numb + 1
print(MyClass.var)
>>> 2
print(MyClass.MyFunct(5))
>>> 6
print("{.var}".format(MyClass))
>>> 2
print("{.MyFunct(5)}".format(MyClass))
>>> AttributeError: type object 'MyClass' has no attribute 'MyFunct(5)'
出于某种原因,我需要使用.format,并且我想添加添加功能的可能性:/
感谢您的帮助
解决方法
python中的
string.Formatter类只能解析参数,他无法执行任何操作 https://docs.python.org/3.4/library/string.html#string.Formatter.vformat
print("{.+4}".format(1))
AttributeError:“ int”对象没有属性“ +4”
1.+4
5
如果要执行某些操作,请使用格式字符串:
print(f"{MyClass.MyFunct(5)}")
,
编写表达式时:
MyClass.MyFunct(5)
请注意,有两件事以非常特定的顺序发生。为了说明这一点,我将其编写为两行单独的代码:
f = MyClass.MyFunct
f(5)
这等效于开头提到的单行。请注意,首先评估MyClass.MyFunct
,然后从"MyFunct"
获取名为MyClass
的属性并返回一个函数对象。只有在这种情况下,才使用参数5
调用函数对象。
由此您可以看到,您不是正在获得名为MyClass
的{{1}}属性。没有这样的属性,只有"MyFunct(5)"
和"var"
。但这就是您要"MyClass"
要做的-它所能做的就是获取属性,而不是像别人所说的执行方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。