python不同类之间调用方法_python – 使用不同的类调用类方法

我们假设我们有以下两个类:

class Class1:

def method(self):

print("Class1.method() with self =", self)

@classmethod

def clsmethod(cls):

print("Class1.clsmethod() with cls =", cls)

obj1 = Class1()

class Class2:

def method(self):

print("Class2.method() with self =", self)

@classmethod

def clsmethod(cls):

print("Class2.clsmethod() with cls =", cls)

obj2 = Class2()

对于正常的绑定方法,很容易注入不同的自我.我们只需调用Class1的方法(),但使用obj2作为self:

>>> Class1.method(o2)

Class1.method() with self = <__main__.class2 object at>

现在的问题是:我怎么能用类方法做类似的事情呢?

>>> Class1.clsmethod(Class2)

Class1.clsmethod() with cls = <__main__.class2 object at>

什么样的Class1必须被替换?使用类型(Class1)(“类1”类似于“obj1类”)的直观方法不起作用,因为类方法不是元类的属性.

最佳答案 通过访问__func__属性,您可以获得未绑定的函数对象.

class Class1:

def method(self):

print("Class1.method() with self =", self)

@classmethod

def clsmethod(cls):

print("Class1.clsmethod() with cls =", cls)

class Class2:

def method(self):

print("Class2.method() with self =", self)

@classmethod

def clsmethod(cls):

print("Class2.clsmethod() with cls =", cls)

Class1.clsmethod.__func__(Class2) #

# prints

# Class1.clsmethod() with cls =

Class2.clsmethod.__func__(Class1) #

# prints

# Class2.clsmethod() with cls =

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值