你可以这样做:
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”中定义。在
我的问题是,为什么会这样,默认的第一个参数不能用作comboclass的参数?为什么不能将参数作为第一个传递给对象呢?我知道classmethod和instancemethods之间的区别,也知道decorator,但我可能不明白如何进行内置的@classmethod
和{combomethod
allready?在
使用这个:
{t>在创建一个包装好的对象时,{cd1>不创建一个特殊的方法。像方法一样,每个访问都会创建一个新对象,在本例中是一个新的函数对象。在
每次访问都是新的:
^{pr2}$foo
实际上是{当从类调用时,闭包具有obj==None(注意这里的“self”指的是combMethod,它引用了
self.method
中的原始函数对象):当作为实例的属性调用时,obj是实例:
以下是存储在combomethod中的原始函数:
_wrapper
执行self.method
,将类或实例作为给定obj值的第一个参数:相关问题 更多 >
编程相关推荐