é¢ç¸å¯¹è±¡ç¨åºè®¾è®¡ä¸ï¼ç±»æ¹æ³åéææ¹æ³æ¯ç»å¸¸ç¨å°ç两个æ¯è¯ã
é»è¾ä¸è®²ï¼ç±»æ¹æ³æ¯åªè½ç±ç±»åè°ç¨ï¼éææ¹æ³å¯ä»¥ç±ç±»åæ对象åè¿è¡è°ç¨ã
å¨C++ä¸ï¼éææ¹æ³ä¸ç±»æ¹æ³é»è¾ä¸æ¯çä»·çï¼åªæä¸ä¸ªæ¦å¿µï¼ä¸ä¼æ··æ·ã
èå¨Pythonä¸ï¼æ¹æ³å为ä¸ç±»å®ä¾æ¹æ³ãç±»æ¹æ³ãéææ¹æ³ã代ç å¦ä¸ï¼
ãclass Test(object):
def InstanceFun(self):
print("InstanceFun");
print(self);
@classmethod
def ClassFun(cls):
print("ClassFun");
print(cls);
@staticmethod
def StaticFun():
print("StaticFun");
t = Test();ããããããã
t.InstanceFun();ããããããï¼ è¾åºInstanceFunï¼æå°å¯¹è±¡å
åå°åâ<__main__.Test object at 0x0293DCF0>â
Test.ClassFun(); # è¾åºClassFunï¼æå°ç±»ä½ç½® <class '__main__.Test'>
Test.StaticFun(); # è¾åºStaticFun
t.StaticFun(); # è¾åºStaticFun
t.ClassFun(); # è¾åºClassFunï¼æå°ç±»ä½ç½® <class '__main__.Test'>
Test.InstanceFun(); # é误ï¼TypeError: unbound method
instanceFun() must be called with Test instance as first argument
Test.InstanceFun(t); # è¾åºInstanceFunï¼æå°å¯¹è±¡å
åå°åâ<__main__.Test object at 0x0293DCF0>â
t.ClassFun(Test); # é误 classFun() takes exactly 1 argument (2 given)
å¯ä»¥çå°ï¼å¨PYTHONä¸ï¼ä¸¤ç§æ¹æ³ç主è¦åºå«å¨äºåæ°ãå®ä¾æ¹æ³éå«çåæ°ä¸ºç±»å®ä¾selfï¼èç±»æ¹æ³éå«çåæ°ä¸ºç±»æ¬èº«clsã
éææ¹æ³æ éå«åæ°ï¼ä¸»è¦ä¸ºäºç±»å®ä¾ä¹å¯ä»¥ç´æ¥è°ç¨éææ¹æ³ã
ããæ以é»è¾ä¸ç±»æ¹æ³åºå½åªè¢«ç±»è°ç¨ï¼å®ä¾æ¹æ³å®ä¾è°ç¨ï¼éææ¹æ³ä¸¤è
é½è½è°ç¨ã主è¦åºå«å¨äºåæ°ä¼ éä¸çåºå«ï¼å®ä¾æ¹æ³ææä¼ éçæ¯selfå¼ç¨ä½ä¸ºåæ°ï¼èç±»æ¹æ³ææä¼ éçæ¯clså¼ç¨ä½ä¸ºåæ°ã
ããPythonå®ç°äºä¸å®ççµæ´»æ§ä½¿å¾ç±»æ¹æ³åéææ¹æ³ï¼é½è½å¤è¢«å®ä¾åç±»äºè
è°ç¨
温馨提示:答案为网友推荐,仅供参考