如何解决Python:为自定义类方法实现保留“cls”注释
所以我最初创建的是我自己的类属性实现。它的行为类似于普通属性,但实际上应用于类:
class classproperty(property):
def __get__(self,cls,owner):
return classmethod(self.fget).__get__(None,owner)()
class A:
@classproperty
def f(cls):
return 1
它工作得很好,但 PyCharm 突出显示了 cls
并说“通常方法的第一个参数被命名为 'self'”。
问题是:有没有办法告诉 PyCharm/解释器,@classproperty
实际上是一种 classmethod
并且我想保留 cls
作为第一个参数的名称?
我已尝试设置 metaclass=classmethod
,但这导致 TypeError: metaclass conflict
。让 classproprty
继承同时继承 property
和 classmethod
也给了我 TypeError: multiple bases have instance lay-out conflict
,这是我所期望的。
那么我可以欺骗它认为我的装饰器是一种classmethod
吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。