python面向對象代碼示例

以python2.7爲例說明

【示例一】指定調用哪個類實例的函數

>>> class Foo(object):
        def func(self):
            print "foo's function"

>>> class Bar(Foo):
        def func(self):
            print "bar's function"

>>> obj = Bar()
>>> # this will call Bar's function
>>> obj.func()
bar's function
>>> obj.__class__ = Foo  # 指定該對象所屬的類
>>> obj.func()
foo's function
>>> 

【示例二】直接調用類的實例,而不是調用實例的方法

>>> class Hi(object):
        def __init__(self, x, y):
            self.__x = x
            self.__y = y
        def myfunc(self):
            print "x=", self.__x, "b=", self.__y

>>> h = Hi("good", "job")
>>> h.myfunc()  # 此處調用該實例的方法
x= good b= job
>>> h("ok")   # 無法直接調用此類的實例
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-22-d4380afdeffd> in <module>()
----> 1 h("ok")

TypeError: 'Hi' object is not callable
>>> # 如何能直接調用實例?這裏有個關鍵的方法__call__()能實現此類的實例可直接調用
>>> class Hi(object):
        def __init__(self, x, y):
            self.__x = x
            self.__y = y
        def myfunc(self):
            print "x=", self.__x, "b=", self.__y
        def __call__(self, arg):
            print "call:", arg + self.__x + self.__y

>>> h2 = Hi("nice", "guy")
>>> h2.myfunc()
x= nice b= guy
>>> h2("yeah~")    # __call__ 函數能實現此類的實例可直接調用
call: yeah~niceguy

好了,就寫到這裏,看官們覺得漲知識了,請在文章左側點個贊 _

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章