类函数和静态方法同时? (蟒蛇)

时间:2015-03-29 20:32:35

标签: python function class static-methods instances

是否可以使一个函数不仅像@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'>

这是该系统的基本示例。基本上,我想要的是如果可能的话传递像实例数据这样的信息的方法,但是如果数据不存在,那么函数将采用必要的变量来执行它的程序。

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

1 个答案:

答案 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被认为是为其编写的类的实例。