python object的实例是什么_Python-向现有对象实例添加方法
小編典典
在Python中,函數(shù)和綁定方法之間存在差異。
>>> def foo():
... print "foo"
...
>>> class A:
... def bar( self ):
... print "bar"
...
>>> a = A()
>>> foo
>>> a.bar
>
>>>
綁定方法已“綁定”(描述性)到一個實例,并且無論何時調(diào)用該方法,該實例都將作為第一個參數(shù)傳遞。
但是,作為類(而不是實例)的屬性的可調(diào)用對象仍未綁定,因此你可以在需要時隨時修改類定義:
>>> def fooFighters( self ):
... print "fooFighters"
...
>>> A.fooFighters = fooFighters
>>> a2 = A()
>>> a2.fooFighters
>
>>> a2.fooFighters()
fooFighters
先前定義的實例也會被更新(只要它們本身沒有覆蓋屬性):
>>> a.fooFighters()
fooFighters
當你要將方法附加到單個實例時,就會出現(xiàn)問題:
>>> def barFighters( self ):
... print "barFighters"
...
>>> a.barFighters = barFighters
>>> a.barFighters()
Traceback (most recent call last):
File "", line 1, in
TypeError: barFighters() takes exactly 1 argument (0 given)
該函數(shù)直接附加到實例時不會自動綁定:
>>> a.barFighters
要綁定它,我們可以在類型模塊中使用MethodType函數(shù):
>>> import types
>>> a.barFighters = types.MethodType( barFighters, a )
>>> a.barFighters
>
>>> a.barFighters()
barFighters
這次,該類的其他實例沒有受到影響:
>>> a2.barFighters()
Traceback (most recent call last):
File "", line 1, in
AttributeError: A instance has no attribute 'barFighters'
2020-02-07
總結
以上是生活随笔為你收集整理的python object的实例是什么_Python-向现有对象实例添加方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础笔记_python基础学
- 下一篇: python读取表格数据_Python读