是否可以使一个函数不仅像@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'>
这是该系统的基本示例。基本上,我想要的是如果可能的话传递像实例数据这样的信息的方法,但是如果数据不存在,那么函数将采用必要的变量来执行它的程序。
感谢任何能解决这个问题的人!
答案 0 :(得分:1)
任何类的任何方法都可以通过类的名称来调用。实例将自动将其自身作为其任何方法的第一个参数传递。所以,如果你有像
这样的东西class Bar:
def bar(self):
return type(self)
你可以做到
thing = Bar()
print(thing.bar())
print(Bar.bar(2))
你会得到
<class '__main__.Bar'>
<class 'int'>
没有问题。当然,这是不赞成的;在为实例编写方法时,应该编写方法,使self
被认为是为其编写的类的实例。