Python-类中的函数对象
当我执行上述程序时。我在0x0068E270处获得Python-类中的函数对象,python,python-3.x,Python,Python 3.x,当我执行上述程序时。我在0x0068E270处获得函数new.add作为输出 有人能帮我了解一下,发生了什么,我可以对k值执行什么样的操作新的。添加您分配给k的值是一个函数。在Python2中,它可能是一个特殊的“unbound method”对象,但您的输出表明您使用的是Python3(在Python3中,除了概念上,unbound方法不再存在) 与任何函数一样,如果需要,可以调用k,传递适合self、one和two的任何值。例如,k(“foo”,1,2)(它将返回3) 传统上,self参数应
函数new.add作为输出
有人能帮我了解一下,发生了什么,我可以对k
值执行什么样的操作新的。添加您分配给k
的值是一个函数。在Python2中,它可能是一个特殊的“unbound method”对象,但您的输出表明您使用的是Python3(在Python3中,除了概念上,unbound方法不再存在)
与任何函数一样,如果需要,可以调用k
,传递适合self
、one
和two
的任何值。例如,k(“foo”,1,2)
(它将返回3
)
传统上,self
参数应该是new
类的一个实例,尽管在Python3中,它不是由任何东西强制执行的(检查这一点是Python2中未绑定的方法对象的目的)。因此,在上面的示例中传递一个字符串效果很好,因为函数体中没有使用self
。(如果将不适当的参数传递为self
,则更复杂的方法通常会失败)
调用方法的通常方法是首先创建类的实例,然后在实例上调用该方法。这将导致实例自动作为第一个参数传递:
class new:
i=1
def __init__(self):
name='sakthi'
def add(self,one,two):
return one+two
k=new.add
print(k)
分配给k
的new.add
值是一个函数。在Python2中,它可能是一个特殊的“unbound method”对象,但您的输出表明您使用的是Python3(在Python3中,除了概念上,unbound方法不再存在)
与任何函数一样,如果需要,可以调用k
,传递适合self
、one
和two
的任何值。例如,k(“foo”,1,2)
(它将返回3
)
传统上,self
参数应该是new
类的一个实例,尽管在Python3中,它不是由任何东西强制执行的(检查这一点是Python2中未绑定的方法对象的目的)。因此,在上面的示例中传递一个字符串效果很好,因为函数体中没有使用self
。(如果将不适当的参数传递为self
,则更复杂的方法通常会失败)
调用方法的通常方法是首先创建类的实例,然后在实例上调用该方法。这将导致实例自动作为第一个参数传递:
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在CPython中的0x0068E270
处,将是k
的地址。由于k
只是一个函数,您仍然可以执行类似于print(k('foo',1,2))
的操作,该操作将打印5函数new.add at 0x0068E270
在CPython中,将是k
的地址。由于k
只是一个函数,您仍然可以执行类似于print(k('foo',1,2))
的操作,以打印5
是。我正在使用python3yes。我正在使用python 3