是否有可能有一个函数,其行为不仅像@staticmethod包装的函数,而且像任何其他类函数一样,这样如果通过实例调用该函数,就可以传递来自实例的数据?
示例:
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 Bar:
def bar(self):
return type(self)
你可以做到
thing = Bar()
print(thing.bar())
print(Bar.bar(2))
你会得到
<class '__main__.Bar'>
<class 'int'>
没有任何问题。这当然是令人不悦的。当为实例编写方法时,应将 self
假定为为其编写的类的实例。
关于python - 同时使用类函数和静态方法? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29334504/