python例項方法、類方法以及靜態方法
阿新 • • 發佈:2018-12-16
不多說,直接上程式碼示例講解。 下面三個方法一次為:示例方法、類放大、靜態方法。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
class Kls(object):
def foo(self, x):
print('executing foo(%s,%s)' % (self, x))
@classmethod
def class_foo(cls,x):
print('executing class_foo(%s,%s)' % (cls,x))
@staticmethod
def static_foo(x):
print('executing static_foo(%s)' % x)
if __name__ == '__main__':
ik = Kls()
ik.foo(1)
print(ik.foo)
print('------------------------------------------------')
ik.class_foo(1)
Kls.class_foo(1)
print(ik.class_foo)
print('------------------------------------------------' )
ik.static_foo(1)
Kls.static_foo(1)
print(ik.static_foo)
輸出如下:
C:\Python36\python3.exe "C:/own/my_exercise/instance and static.py" executing foo(<__main__.Kls object at 0x02D2DD50>,1) <bound method Kls.foo of <__main__.Kls object at 0x02D2DD50>> ------------------------------------------------ executing class_foo(<class '__main__.Kls'>,1) executing class_foo(<class '__main__.Kls'>,1) <bound method Kls.class_foo of <class '__main__.Kls'>> ------------------------------------------------ executing static_foo(1) executing static_foo(1) <function Kls.static_foo at 0x02D1A588>
如上,三個方法區分如下: 例項方法:
- 通過類的例項進行呼叫
- 不可以通過類直接呼叫
- 最為常見
類方法:
- 既可以通過類也可以通過例項呼叫類方法
靜態方法:
- 需要定義一些方法,這些方法跟類有關,但在實現時並不需要引用類或者例項,例如,設定環境變數,修改另一個類的變數等;靜態方法很像我們在類外定義的函式。
- 可以使用類也可以使用示例呼叫靜態方法