不久前我正在研究的一个函数具有如下结构:
def function():
class Inner:
#class stuff
#function stuff
Run Code Online (Sandbox Code Playgroud)
Inner只在 中使用和需要function,并且它也不会在函数结束时返回。定义一个本地类是一个坏主意吗?我听说过很多关于它对性能有何不利的事情,因为每次运行该函数时,python 都必须重新编译该类,而且由于我的目标是使用此函数实现性能,所以我有点担心这样做.
除了效率低下之外,每个Inner类都是一个全新的对象,因此单独的实例永远不会属于同一类,这在某种程度上违背了类性的要点:
In [4]: def factory():
...: class Inner(object):
...: pass
...: return Inner
...:
In [5]: i1 = factory()()
In [6]: i2 = factory()()
In [7]: i1.__class__
Out[7]: __main__.Inner
In [8]: i2.__class__
Out[8]: __main__.Inner
In [9]: i1.__class__ is i2.__class__
Out[9]: False
In [10]: isinstance(i1, i2.__class__)
Out[10]: False
Run Code Online (Sandbox Code Playgroud)
如果每个实例完全独立,这不是问题,但需要注意。