python中有多少个函数_Python中有函数吗,还是一切都是一个方法?

所以,举个例子:>>> def whatever():

... pass

...

>>> whatever

当我们使用def时,我们已经创建了一个对象,它是一个函数。例如,我们可以查看对象的属性:

^{pr2}$

回答你的问题-whatever()不是一种file.py的方法。最好将其视为绑定到file.py全局命名空间中名称whatever的函数对象。在>>> globals()

{'__builtins__': , '__name__': '__main__', '__d

oc__': None, 'whatever': }

或者从另一个角度来看,没有什么可以阻止我们将名称whatever完全绑定到另一个对象:>>> whatever

>>> whatever = "string"

>>> whatever

'string'

还有其他创建函数对象的方法。例如,lambdas:>>> somelambda = lambda x: x * 2

>>> somelambda

at 0x00AF5F30>

方法就像是一个函数对象的属性。使它成为方法的原因是这些方法绑定到对象上。这将导致对象作为我们通常称为self的第一个参数传递给函数。在

让我们用一个方法somemethod和一个实例someobject来定义一个类SomeClass:>>> class SomeClass:

... def somemethod(one="Not Passed", two="Not passed"):

... print "one = %s\ntwo = %s" % (one,two)

...

>>> someobject = SomeClass()

让我们把somemethod看作一个属性:>>> SomeClass.somemethod

>>> someobject.somemethod

我们可以看到它是对象上的绑定方法和类上的未绑定方法。现在让我们调用该方法,看看会发生什么:>>> someobject.somemethod("Hello world")

one = <__main__.SomeClass instance at 0x00AFE030>

two = Hello world

作为绑定方法,somemethod接收的第一个参数是对象,第二个参数是方法调用中的第一个参数。让我们调用类上的方法:>>> SomeClass.somemethod("Hello world")

Traceback (most recent call last):

File "", line 1, in

TypeError: unbound method somemethod() must be called with SomeClass instance as first argument (got str instance instead)

Python抱怨是因为我们试图调用方法而不给它一个适当类型的对象。所以我们可以通过“手动”传递对象来解决这个问题:>>> SomeClass.somemethod(someobject,"Hello world")

one = <__main__.SomeClass instance at 0x00AFE030>

two = Hello world

当你想从超类调用一个特定的方法时,你可以使用这种类型的方法调用——在类上调用一个方法。在

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值