擅长:python、mysql、java
<p>我找到了一个解决方案,它不涉及通过<code>__get__</code>绑定路径函数:</p>
<pre><code>def _patched_initsubclass(cls, **kwargs):
print(f"CLS from subclassing A: {cls}")
super(cls, None).__init_subclass__(**kwargs)
class A: ...
A.__init_subclass__ = classmethod(_patched_initsubclass)
class B(A): ... # Output CLS from subclassing A: <class '__main__.B'>
</code></pre>
<p>我仍然不清楚为什么会这样:即<code>classmethod()</code>和直接与<code>__get__</code>绑定有什么区别</p>
<p>答案可能与<code>classmethod</code>在引擎盖下的作用有关,因此我将对此进行研究</p>
<p>我将把这个答案留给其他可能觉得有用的人,并将包括任何后续信息</p>