擅长:python、mysql、java
<p>您可以使用<a href="https://docs.python.org/3/library/functions.html#staticmethod" rel="nofollow noreferrer">^{<cd1>}</a>来实现这一点—它不需要类实例,因此可以仅使用类来调用</p>
<blockquote>
<p><em>A static method can be called either on the class (such as <code>C.f()</code>) or on an instance (such as <code>C().f()</code>).</em></p>
</blockquote>
<p>将其用作方法上的装饰器:</p>
<pre><code>class crazyClass:
def __init__(self):
self.name = "Crazy Class"
@staticmethod
def madnessUnleashed(): # there's no `self`
print("WAJALAKAMAKACHAKA!")
crazyClass.madnessUnleashed() # no instance created
</code></pre>
<hr/>
<p>在一个类中有一个普通方法的例子中,<code>crazyClass.madnessUnleashed(crazyClass())</code>实际上创建了一个类的实例,这可以看作是一种开销。如果实例化它涉及到文件创建、网络请求、数据库连接等,或者如果在数以百万计的循环中使用它们,那么它可能会对性能产生更高的影响,重复创建这些实例将影响性能</p>
<p><strong>至于您关于内存泄漏的问题:</strong>一旦方法执行完毕,Python的垃圾回收器将删除该实例(尽管之后不会立即删除),因此它不是内存泄漏</p>