我正在阅读this article。在本文中,一行说:
对于C类,C的实例x和C的方法m如下 三个方法调用是等价的:
type(x).m(x,...)
C.m(x,...)
x.m(...)
我尝试将此语句转换为这样的程序:
class C:
def __init__(self,a,c):
self.a=a
self.b=c
def m(self):
d=self.a+self.b
x=C(1,2)
x.m()
print(type(x).m(x))
print(C.m(x))
print(x.m())
但我不知道这三种方法的含义以及它们是如何工作的?如果我的程序使用方法错误,请更正。
我不是要求修改此代码,我问的是如何使用这三种方法,并为每个方法调用提供一个示例。
如果你能为每种对我有帮助的三种方法提供适当的例子。
答案 0 :(得分:1)
如果使用python 2.7,您应该从C
派生object
以获得type(x)
的正确类型,m
知道方法class C(object):
def __init__(self,a,c):
self.a=a
self.b=c
def m(self):
return self.a+self.b
x=C(1,2)
x.m()
print(type(x).m(x))
print(C.m(x))
print(x.m())
。
x.m()
我认为在python 3中,这是隐含的。是的,而不是计算d,我只返回结果 - 所以你看到了什么。
根据您的澄清进行修改:
显示调用该方法的三种方法用于说明。如果可能的话,我没有看到任何明显的理由不使用m
。但是在python中,这是一个快捷方式:在实例x
上调用x
类型的方法type(x).m(x)
。
type(x)
是写出正在发生的事情的最直接的方式。现在,C
是object
(在python 3中或者使用新式类 - 从{{1}}派生 - 至少是else实例),所以第一种和第二种写作方式是等价的好。
答案 1 :(得分:0)
你的回复没什么。
你想要
def m(self):
return self.a + self.b
最有可能在C
班级