tMC*_*tMC 2 python oop methods class
测试一个类是否定义了特定方法的最佳(或'Pythonic')方法是什么?
这两种方法都有效,但感觉不正确,因为在第二种方法中,我只是尝试访问它并捕获异常(如果它不存在).
有更好/更正确的方法吗?
class TestClass(object):
def TestFunc(self):
pass
if 'TestFunc' in dir(TestClass):
print 'yes'
else:
print 'No'
try:
if TestClass.__getattribute__(TestClass, 'TestFunc'):
print 'yes'
except:
print 'No'
Run Code Online (Sandbox Code Playgroud)
sen*_*rle 10
用途hasattr:
class Foo(object):
def bar():
pass
assert hasattr(Foo, 'bar')
Run Code Online (Sandbox Code Playgroud)
如果你真的想测试属性是否是一个方法,你可以这样做:
assert hasattr(Foo, 'bar') and callable(getattr(Foo, 'bar'))
Run Code Online (Sandbox Code Playgroud)