【发布时间】:2012-06-03 00:45:25
【问题描述】:
所以我在查看代码时遇到了这个有趣的问题:
class Foo:
def __init__(self, foo_name):
self.foo_doo = getattr(foo_name, 'foo_lists', None)
def assert_foo(self, varname):
assert hasattr(self, 'foo_%s' % varname)
def foobar(self):
assert_foo('doo')
想知道是否将断言包装到您自己的自定义版本是更快/更好的解决方案,然后每次需要确保属性存在而不是 None 时使用 assert hasattr(...)?
【问题讨论】:
-
没有什么特别的原因你不能 -
unittest有许多像assertEqual这样的包装器。这取决于使您的代码最易读的因素。 -
更快?当然,打字速度更快。显然,执行速度较慢,因为涉及到一个额外的函数调用。
-
我同意@ThomasK,我认为没有问题。至于速度,我认为在大多数情况下应该可以忽略不计(尽管@kindall 指出了理论上的差异),具体取决于您执行此代码的频率。
标签: python-3.x python-2.7 python pep8