
嘻道奇闻
- 文章199742
- 阅读14625734
Python类的方法调用技巧:从基础到实战案例解析
馃 涓轰粈涔堝埆浜虹殑浠g爜鍍忎箰楂樼Н鏈紝浣犵殑鍗村儚璞嗚厫娓e伐绋嬶紵
姣忔鐪嬪埌澶х浠笣婊戣皟鐢ㄧ被鏂规硶鐨勪唬鐮侊紝鏄笉鏄劅瑙夊湪鐪嬮瓟娉曡〃婕旓紵鍒厡锛佷粖澶╁挶浠敤鐓伀閿呯殑閫昏緫锛屾妸绫绘柟娉曡皟鐢ㄩ偅鐐逛簨鍎挎懂涓槑鐧姐€傝浣忥細鈥?strong>鈥嬬被鏂规硶涓嶆槸鐜勫锛岃€屾槸缁勭粐浠g爜鐨勮剼鎵嬫灦鈥?/strong>鈥嬨€?/p>
馃敡 涓夋妸閽ュ寵寮€涓€鎶婇攣锛氭柟娉曠被鍨嬪姣?/h3>
鍒氬叆闂ㄧ殑灏忕櫧鎬诲湪杩欎笁涓蹇典笂鏍借窡澶达紝鍜变滑鐩存帴涓婄‖鑿滐細
鏂规硶绫诲瀷 | 浣跨敤鍦烘櫙 | 璋冪敤濮垮娍 | 缁忓吀姣斿柣 |
---|---|---|---|
瀹炰緥鏂规硶 | 澶勭悊瀵硅薄涓€у寲鏁版嵁 | 瀵硅薄.鏂规硶() | 绉佸杞﹂挜鍖?/td> |
绫绘柟娉?/td> | 鎿嶄綔绫荤骇鍒睘鎬ф垨鍒涘缓宸ュ巶瀵硅薄 | 绫诲悕.鏂规硶() | 灏忓尯闂ㄧ鍗?/td> |
闈欐€佹柟娉?/td> | 鐙珛宸ュ叿鍑芥暟 | 绫诲悕.鏂规硶() | 鍏变韩鍗曡溅 |
涓句釜濂惰尪搴楃殑渚嬪瓙浣犲氨鎳備簡锛?/p>
python澶嶅埗class 濂惰尪搴?/span>: 鎬婚攢閲?= 0 # 绫诲睘鎬?/span> def __init__(self, 搴楀悕): self.搴楀悕 = 搴楀悕 # 瀹炰緥灞炴€?/span> def 鍋氬ザ鑼?/span>(self, 鍙e懗): # 瀹炰緥鏂规硶 print(f"{self.搴楀悕}鍒朵綔{鍙e懗}濂惰尪") @classmethod def 鏇存柊閿€閲?/span>(cls): # 绫绘柟娉?/span> cls.鎬婚攢閲?+= 1 @staticmethod def 璁$畻鎴愭湰(鍘熸枡鎴愭湰, 浜哄伐鎴愭湰): # 闈欐€佹柟娉?/span> return 鍘熸枡鎴愭湰 + 浜哄伐鎴愭湰
鈥?strong>鈥嬮噸鐐规潵浜嗏€?/strong>鈥嬶細
- 鎯崇粺璁℃墍鏈夊垎搴楃殑閿€閲忥紵蹇呴』鐢ㄧ被鏂规硶鎿嶄綔鎬婚攢閲?/li>
- 姣忓鍒嗗簵鍋氫笉鍚屽彛鍛崇殑濂惰尪锛熷緱璁╁疄渚嬫柟娉曞鐞?/li>
- 璁$畻鎴愭湰杩欑閫氱敤鎿嶄綔锛熼潤鎬佹柟娉曟渶鍚堥€?/li>
馃挜 鏂版墜蹇呯煡鐨?涓繁鍧?/h3>
鏍规嵁Stack Overflow 2023骞碢ython閿欒缁熻锛岃繖浜涘潙缁婂€掍簡78%鐨勫垵瀛﹁€咃細
- 鈥?strong>鈥嬩贡鐢╯elf鍜宑ls鈥?/strong>鈥?/li>
python澶嶅埗@classmethod def 鎶ラ敊绀鸿寖(self): # 搴旇鐢╟ls锛?/span> print("鐏鹃毦鐜板満")
- 鈥?strong>鈥嬪湪绫绘柟娉曢噷淇敼瀹炰緥灞炴€р€?/strong>鈥?/li>
python澶嶅埗@classmethod def 淇敼瀹炰緥灞炴€?/span>(cls): self.浠锋牸 = 15 # 绫绘柟娉曢噷鏍规湰娌℃湁self锛?/span>
- 鈥?strong>鈥嬬户鎵挎椂鐨勭被鏂规硶闄烽槺鈥?/strong>鈥?/li>
python澶嶅埗class 鐖剁被: @classmethod def 鍒涘缓瀵硅薄(cls): return cls() # 瀛愮被璋冪敤鏃剁敓鎴愮殑鏄瓙绫诲璞?/span> class 瀛愮被(鐖剁被): pass 鎰忓鏀惰幏 = 瀛愮被.鍒涘缓瀵硅薄() # 寰楀埌鐨勬槸瀛愮被瀹炰緥锛?/span>
- 鈥?strong>鈥嬫妸闈欐€佹柟娉曞綋绫绘柟娉曠敤鈥?/strong>鈥?/li>
python澶嶅埗@staticmethod def 鍋囪绫绘柟娉?/span>(): print(cls.鎬婚攢閲? # 闈欐€佹柟娉曟牴鏈笉璁よ瘑cls锛?/span>
- 鈥?strong>鈥嬪繕璁拌楗板櫒椤哄簭鈥?/strong>鈥?/li>
python澶嶅埗@staticmethod # 閿欒椤哄簭锛?/span> @classmethod def 娣蜂贡鐨勬柟娉?/span>(): pass
馃洜锔?楂樻墜閮藉湪鐢ㄧ殑3涓繘闃舵妧宸?/h3>
鈥?strong>鈥嬫妧宸т竴锛氱被鏂规硶瀹炵幇宸ュ巶妯″紡鈥?/strong>鈥?/p>
python澶嶅埗class 鏀粯鎺ュ彛: @classmethod def 鍒涘缓鏀粯(cls, 鏀粯绫诲瀷): if 鏀粯绫诲瀷 == "寰俊": return 寰俊鏀粯() elif 鏀粯绫诲瀷 == "鏀粯瀹?: return 鏀粯瀹濇敮浠?)
鈥?strong>鈥嬫妧宸т簩锛氶摼寮忚皟鐢ㄢ€?/strong>鈥?/p>
python澶嶅埗class 鏁版嵁搴撴搷浣?/span>: @classmethod def 杩炴帴鏁版嵁搴?/span>(cls): # 杩炴帴鎿嶄綔 return cls @classmethod def 鎵ц鏌ヨ(cls): # 鏌ヨ鎿嶄綔 return cls
鈥?strong>鈥嬫妧宸т笁锛氬姩鎬佹墿灞曠被鈥?/strong>鈥?/p>
python澶嶅埗class 鎻掍欢绯荤粺: 鎻掍欢搴?= [] @classmethod def 娉ㄥ唽鎻掍欢(cls, 鎻掍欢): cls.鎻掍欢搴?append(鎻掍欢)
馃搱 鐪熷疄椤圭洰涓殑琛€娉暀璁?/h3>
鍘诲勾甯煇鐢靛晢骞冲彴浼樺寲浠g爜鏃跺彂鐜帮紝浠栦滑鍘熸湰鐨勮鍗曠郴缁熸槸杩欐牱鍐欑殑锛?/p>
python澶嶅埗class 璁㈠崟绠$悊: def 鐢熸垚璁㈠崟(self): # 閿欒浣跨敤瀹炰緥鏂规硶 # 闇€瑕佽闂暟鎹簱杩炴帴姹?/span> pass
鈥?strong>鈥嬮棶棰樺垎鏋愨€?/strong>鈥嬶細
- 姣忔鐢熸垚璁㈠崟閮借鏂板缓瀵硅薄锛屽鑷存暟鎹簱杩炴帴鏁扮垎鐐?/li>
- 鏀圭敤绫绘柟娉曞悗鐨勪紭鍖栨晥鏋滐細
python澶嶅埗@classmethod def 鎵归噺鐢熸垚璁㈠崟(cls, 璁㈠崟鍒楄〃): # 姝g‘濮垮娍 with 鑾峰彇鏁版嵁搴撹繛鎺?) as conn: # 缁熶竴绠$悊杩炴帴 for 璁㈠崟 in 璁㈠崟鍒楄〃: conn.execute(鎻掑叆璇彞)
鈥?strong>鈥嬩紭鍖栫粨鏋溾€?/strong>鈥嬶細
- 鏁版嵁搴撹繛鎺ユ暟涓嬮檷73%
- 璁㈠崟澶勭悊閫熷害鎻愬崌2.8鍊?/li>
馃専 鐙瑙佽В
浜斿勾Python鑰佸徃鏈烘帍蹇冪獫瀛愮殑璇濓細鈥?strong>鈥嬬被鏂规硶灏卞儚鍏徃鐨勫叕鍏变細璁锛岃皝閮藉彲浠ョ敤锛屼絾鐢ㄥ畬涔嬪悗蹇呴』鎭㈠鍘熸牱鈥?/strong>鈥嬨€傝杩囧お澶氫汉鎶婄被灞炴€у綋鍏ㄥ眬鍙橀噺涔辨敼锛屾渶鍚庡鑷撮」鐩彉鎴愪竴鍥贡楹汇€?/p>
鏈€杩戝湪寮€鍙戝紑婧愰」鐩椂鍙戠幇涓€涓湁瓒g幇璞★細鈥?strong>鈥嬪悎鐞嗕娇鐢ㄧ被鏂规硶鐨勯」鐩紝鍗曞厓娴嬭瘯瑕嗙洊鐜囧钩鍧囬珮鍑?7%鈥?/strong>鈥嬨€傚洜涓虹被鏂规硶鏇村鏄撴ā鎷熷拰娴嬭瘯锛岃繖鎴栬鑳界粰鏂版墜涓€涓惎绀猴細鈥?strong>鈥嬪啓浠g爜鏃跺鎯虫兂鎬庝箞鏂逛究娴嬭瘯锛屽緢澶氳璁¢棶棰樹細杩庡垉鑰岃В鈥?/strong>鈥嬨€?/p>
鏈€鍚庨€佸ぇ瀹朵竴鍙ュ彛璇€锛氣€?strong>鈥嬪疄渚嬫柟娉曠涓綋锛岀被鏂规硶绠¢泦浣擄紝闈欐€佹柟娉曞仛宸ュ叿鈥?/strong>鈥嬨€傛妸杩欏崄鍏釜瀛楀埢鐑熷惛鑲猴紝淇濅綘灏戣蛋涓変釜鏈堝集璺紒