无法使用.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"要做的-它所能做的就是获取属性,而不是像别人所说的执行方法。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...