python - 在 python 中使用与实例和类方法相同的函数

标签 python decorator instance class-method

可以这样做:

class master:
    @combomethod 
    def foo(param):
        param.bar() # Param could be type as well as object

class slaveClass( master ):
    @classmethod 
    def bar(cls):
        print("This is class method")

slaveType = slaveClass
slaveType.foo()

class slaveInstance( master ):
    def __init__(self, data):
        self.data = data
    def bar(self):
        print("This is "+self.data+" method")


slaveType = slaveInstance("instance")
slaveType.foo()

combomethod 在“Creating a method that is simultaneously an instance and class method”中定义。

我的问题是,为什么会这样,默认的第一个参数不能用作组合类的参数?或者至少,为什么我不能将对象作为第一个参数传递给类方法?我知道 classmethod 和 instancemethods 的区别,我知道装饰器,但我可能不明白内置的 @classmethodself 参数传递是如何进行的。有技术限制吗?或者,为什么 combomethod 还没有内置?

最佳答案

使用这个:

class A(object):

    @classmethod
    def print(cls):
        print 'A'

    def __print(self):
        print 'B'

    def __init__(self):
        self.print = self.__print


a = A()
a.print()
A.print()

关于python - 在 python 中使用与实例和类方法相同的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7373648/

相关文章:

python - 使用类装饰器实现后期初始化

python - 本地加载StanfordNLP模型

python - 如何使用装饰器和线程返回函数值

python - Fabric get( ) 权限被 use_sudo=True 拒绝

python - 如何使类装饰器不破坏 isinstance 函数?

java - 如何从通用对象调用实例方法?

php在实例中设置一个匿名函数

java - 是否可以在运行时将方法调用重定向到同一对象的另一个实例?

python - 为什么 python statistics.mean() 函数在传递 numpy.ndarray 或列表时表现不同?

javascript - 使用requests-html渲染javascript页面时发生IOError