class new:
i=1
def __init__(self):
name='sakthi'
def add(self,one,two):
return one+two
k=new.add
print(k)
当我执行上述程序时。我得到function new.add at 0x0068E270
作为输出。
任何人都可以帮助我理解,发生了什么以及我可以使用价值k
进行什么样的操作。
答案 0 :(得分:1)
您分配给new.add
的{{1}}值是一个函数。在Python 2中,它本来是一个特殊的“未绑定方法”对象,但是你的输出表明你正在使用Python 3(除了概念上不再存在未绑定的方法)。
与任何功能一样,您可以根据需要调用k
,传递适用于k
,self
和one
的任何值。例如,two
(将返回k("foo", 1, 2)
)。
传统上3
参数应该是self
类的一个实例,尽管在Python 3中没有任何强制执行(检查这是Python 2中未绑定方法对象的用途) )。因此,在上面的示例中传递一个字符串工作正常,因为new
没有在函数体中用于任何事情。 (如果您将不合适的参数作为self
传递,则更复杂的方法通常会失败。)
调用方法的常用方法是首先创建一个类的实例,然后在实例上调用该方法。这会导致实例自动作为第一个参数传递:
self
答案 1 :(得分:1)
function new.add at 0x0068E270
在CPython中,将是k
的地址。由于k
只是一个功能,您仍然可以执行print(k('foo', 1, 2))
之类的打印5