Class 同时使用函数和静态方法? (Python)

Class Function and Static Method at the Same Time? (Python)

是否有可能有一个函数不仅表现得像@staticmethod 包装函数,而且表现得像任何其他 class 函数,这样如果通过实例调用函数,来自实例的数据可以通过了吗?

示例:

class Amazing(object):
    @static_and_class
    def func(x):
        return type(x)

apple = Amazing()

>>> print(apple.func())
>>> <class 'Amazing'>
>>> print(Amazing.func(2))
>>> <class 'int'>

这是系统的一个基本示例。基本上,我想要的是一种尽可能传递实例数据等信息的方法,但如果数据不存在,该函数将采用必要的变量来执行其程序。

感谢任何能解决这个问题的人!!

任何 class 的任何方法都可以通过 class 的名称调用。实例将自动将自身作为其任何方法的第一个参数传递。所以,如果你有类似

class Bar:
    def bar(self):
        return type(self)

你可以做到

thing = Bar()
print(thing.bar())
print(Bar.bar(2))

你会得到

<class '__main__.Bar'>
<class 'int'>

没问题。当然,这是不受欢迎的。在为实例编写方法时,应该这样编写方法,即假定 self 是为其编写的 class 的实例。