Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-类中的函数对象_Python_Python 3.x - Fatal编程技术网

Python-类中的函数对象

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参数应

当我执行上述程序时。我在0x0068E270处获得
函数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