【发布时间】:2019-07-23 18:04:48
【问题描述】:
这里是代码
class MyTest:
def __init__(self):
pass
def __getattr__(self, attr):
pass
t = MyTest()
print 'my test object: %r' %t
所以打印会触发TypeError: 'NoneType' object is not callable,而我只想查看对象是否存在。
授予此代码不是很有用。但是我在一个大代码库中有一个像这样的存根类,所以我做到了
if module and module.class and module.class.propery:
# do something with that property
...
并得到了Type Error: 'NoneType' object is not callable,但该线路没有调用任何东西!我猜python是在幕后隐式调用一些函数。
奇怪的是,如果该类继承自 Object,则不会发生这种情况
发生了什么事?
【问题讨论】:
-
__getattr__应该返回一些东西,而不是None -
@Jean-FrançoisFabre 歧视!
None是“某物”! -
您的字符串格式化操作尝试访问
t的__repr__属性,并且由于您使用的是旧式类(您没有从object继承),__getattr__正在返回None而不是实际返回要调用的所需方法。不要使用老式的类。
标签: python python-2.7 typeerror setattr