首页 > 社会 > 正文内容

Python类的方法调用技巧:从基础到实战案例解析

社会2025-05-19 12:36:27

馃 涓轰粈涔堝埆浜虹殑浠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%鐨勫垵瀛﹁€咃細

  1. 鈥?strong>鈥嬩贡鐢╯elf鍜宑ls鈥?/strong>鈥?/li>
python澶嶅埗
@classmethod
def 鎶ラ敊绀鸿寖(self):  # 搴旇鐢╟ls锛?/span>
    print("鐏鹃毦鐜板満")
  1. 鈥?strong>鈥嬪湪绫绘柟娉曢噷淇敼瀹炰緥灞炴€р€?/strong>鈥?/li>
python澶嶅埗
@classmethod
def 淇敼瀹炰緥灞炴€?/span>(cls):
    self.浠锋牸 = 15  # 绫绘柟娉曢噷鏍规湰娌℃湁self锛?/span>
  1. 鈥?strong>鈥嬬户鎵挎椂鐨勭被鏂规硶闄烽槺鈥?/strong>鈥?/li>
python澶嶅埗
class 鐖剁被:
    @classmethod
    def 鍒涘缓瀵硅薄(cls):
        return cls()  # 瀛愮被璋冪敤鏃剁敓鎴愮殑鏄瓙绫诲璞?/span>

class 瀛愮被(鐖剁被): 
    pass

鎰忓鏀惰幏 = 瀛愮被.鍒涘缓瀵硅薄()  # 寰楀埌鐨勬槸瀛愮被瀹炰緥锛?/span>
  1. 鈥?strong>鈥嬫妸闈欐€佹柟娉曞綋绫绘柟娉曠敤鈥?/strong>鈥?/li>
python澶嶅埗
@staticmethod
def 鍋囪绫绘柟娉?/span>():
    print(cls.鎬婚攢閲?  # 闈欐€佹柟娉曟牴鏈笉璁よ瘑cls锛?/span>
  1. 鈥?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>鈥嬨€傛妸杩欏崄鍏釜瀛楀埢鐑熷惛鑲猴紝淇濅綘灏戣蛋涓変釜鏈堝集璺紒

搜索