擅长:python、mysql、java
<p>作为对答案<a href="https://stackoverflow.com/a/9437273/1258307">https://stackoverflow.com/a/9437273/1258307</a>的回复,由于我还没有足够的点数来评论它,除非您将<code>im_func</code>替换为<code>__func__</code>,否则它在python 3.4下无法工作(而且很可能是更高版本),因为函数不再具有<code>__func__</code>属性,而只具有绑定方法。</p>
<p>编辑:这是原始问题的解决方案(它适用于2.7和3.4,我假设所有其他版本介于两者之间):</p>
<pre><code> class Super:
def __init__(self):
if self.method.__code__ is Super.method.__code__:
print('same')
else:
print('different')
@classmethod
def method(cls):
pass
class Sub1(Super):
def method(self):
print('hi')
class Sub2(Super):
pass
Super() # should be same
Sub1() # should be different
Sub2() # should be same
</code></pre>
<p>结果如下:</p>
<pre><code>same
different
same
</code></pre>