Python调用对象方法三步:例、类方法与静态方法
馃 "涓哄暐鎴戣皟涓柟娉曟€绘姤閿欙紵"
鏂版墜鍐橮ython鏃舵渶甯歌俯鐨勫潙锛氭槑鏄庣収鐫€鏁欑▼鍐欎簡绫?鏂规硶()
锛屽嵈寮瑰嚭TypeError: method() missing 1 required positional argument: 'self'
銆傚埆鎱岋紒杩欏叾瀹炴槸鈥?strong>鈥嬫病鎼炴竻涓夌鏂规硶璋冪敤鐨勬湰璐ㄥ尯鍒€?/strong>鈥嬧€斺€斿畠浠氨鍍忎笁绉嶄笉鍚岀殑"閽ュ寵"锛屽紑涓嶅悓鐨?闂?锛堝満鏅級銆備粖澶╁挶浠敤涓夋鎷嗚В锛屽寘浣犲交搴曟悶鎳傦紒
馃毝鈥嶁檪锔?绗竴姝ワ細瀹炰緥鏂规硶鈥斺€斿璞′笓灞炲姩浣滐紙"鎴戠殑閽卞寘鎴戝仛涓?锛?/h3>
鈥?strong>鈥嬫牳蹇冨彛璇€鈥?/strong>鈥嬶細鈥?strong>鈥嬪厛閫犲璞★紝鍐嶇偣鎿嶄綔鈥?/strong>鈥嬨€傚疄渚嬫柟娉曞繀椤荤粦瀹氬叿浣撳璞℃墠鑳界敤锛屽氨鍍忎綘鐨勯摱琛屽崱鍙兘浣犺嚜宸卞埛銆?/p>
python澶嶅埗class BankAccount: def __init__(self, money=0): self.money = money # 姣忎釜璐︽埛鐙珛閲戦 # 瀹炰緥鏂规硶锛氭搷浣滆嚜宸辩殑閽?/span> def withdraw(self, amount): if self.money >= amount: self.money -= amount print(f"鉁?鍙栨{amount}鍏冿紝浣欓{self.money}") else: print("鉂?浣欓涓嶈冻锛?) # 姝g‘璋冪敤濮垮娍馃憞 my_account = BankAccount(1000) # 鍏堥€?鎴戠殑璐︽埛" my_account.withdraw(500) # 杈撳嚭锛氣渽 鍙栨500鍏冿紝浣欓500 # 閿欒绀鸿寖锛佺洿鎺ヨ皟浼氭姤閿?/span> BankAccount.withdraw(500) # TypeError! 灏憇elf鍙傛暟
鈥?strong>鈥嬪叧閿偣鈥?/strong>鈥嬶細
- 馃攽 鈥?strong>鈥媠elf鏄殣寮忎紶閫掔殑鈥?/strong>鈥嬶細璋冪敤
my_account.withdraw()
鏃讹紝Python鑷姩鎶?code>my_account浼犵粰self
鍙傛暟 - 馃挕 鈥?strong>鈥嬮€傜敤鍦烘櫙鈥?/strong>鈥嬶細鎿嶄綔瀵硅薄绉佹湁灞炴€э紙濡傝处鎴蜂綑棰濄€佺敤鎴峰鍚嶏級
鈥?strong>鈥嬩釜浜鸿瑙b€?/strong>鈥嬶細寰堝鏂版墜鍗″湪
self
鍙傛暟锛屽叾瀹炲畠灏辨槸涓?浠h█浜?鈥斺€斾唬琛ㄥ綋鍓嶅璞¤嚜宸便€備綘璋冪敤鏃垛€?strong>鈥嬪崈涓囧埆鎵嬪姩浼爏elf鈥?/strong>鈥嬶紝浜ょ粰Python鑷姩澶勭悊灏卞ソ锛?/p>
鈿欙笍 绗簩姝ワ細绫绘柟娉曗€斺€斿叏浣撳叡浜殑閰嶇疆锛?鍏ㄥ叕鍙告定宸ヨ祫"锛?/h3>
鈥?strong>鈥嬫牳蹇冨彛璇€鈥?/strong>鈥嬶細鈥?strong>鈥婡classmethod瑁呴グ锛宑ls鎸囦唬绫绘湰韬€?/strong>鈥嬨€傜被鏂规硶鎿嶄綔鐨勬槸鍏ㄤ綋瀵硅薄鍏变韩鐨勫睘鎬э紝姣斿璋冩暣鍏ㄨ鍒╃巼銆?/p>
python澶嶅埗class Employee: bonus_rate = 0.1 # 鍏ㄥ叕鍙哥粺涓€濂栭噾姣斾緥 @classmethod def update_bonus(cls, new_rate): # cls鎺ユ敹绫绘湰韬?/span> cls.bonus_rate = new_rate print(f"馃彚 鍏ㄥ憳濂栭噾姣斾緥璋冩暣涓?span>{new_rate*100}%!") def calc_bonus(self, salary): return salary * self.bonus_rate # 璋冪敤濮垮娍锛氭棤闇€瀹炰緥锛岀洿鎺ョ被鍚嶆搷浣滒煈?/span> Employee.update_bonus(0.15) # 杈撳嚭锛氿煆?鍏ㄥ憳濂栭噾姣斾緥璋冩暣涓?5.0%! # 鎵€鏈夊憳宸ュ疄渚嬭嚜鍔ㄧ敓鏁?/span> emp1 = Employee() print(emp1.calc_bonus(10000)) # 杈撳嚭锛?500.0锛?0000 * 0.15锛?/span>
鈥?strong>鈥嬪叧閿偣鈥?/strong>鈥嬶細
- 馃敡 鈥?strong>鈥嬩慨鏀圭被鐘舵€佲€?/strong>鈥嬶細姣斿璋冩暣閰嶇疆鍙傛暟銆侀噸缃鏁板櫒
- 馃З 鈥?strong>鈥嬪伐鍘傛ā寮忊€?/strong>鈥嬶細鐢?code>cls()鍒涘缓鐏垫椿瀹炰緥锛堝鏍规嵁绫诲瀷杩斿洖涓嶅悓瀛愮被锛?/li>
鈥?strong>鈥嬮伩鍧戞寚鍗椻€?/strong>鈥嬶細绫绘柟娉曗€?strong>鈥嬩笉鑳芥搷浣滃疄渚嬪睘鎬р€?/strong>鈥嬶紒姣斿鍦?code>update_bonus閲屽啓
self.salary
浼氭姤閿欌€斺€斿畠鏍规湰涓嶈璇嗗叿浣撳憳宸ャ€?/p>
馃О 绗笁姝ワ細闈欐€佹柟娉曗€斺€旂嫭绔嬪伐鍏峰嚱鏁帮紙"涓囪兘璁$畻鍣?锛?/h3>
鈥?strong>鈥嬫牳蹇冨彛璇€鈥?/strong>鈥嬶細鈥?strong>鈥婡staticmethod瑁呴グ锛屽拰绫?瀹炰緥鏃犲叧鈥?/strong>鈥嬨€傞潤鎬佹柟娉曞儚鎸傚湪绫婚噷鐨?宸ュ叿绠?锛屼笉纰板唴閮ㄦ暟鎹紝绾伐鍏蜂汉锛?/p>
python澶嶅埗class FinanceTools: @staticmethod def tax_calculator(income): """璁$畻涓◣锛岀嫭绔嬩簬鍏徃璐㈠姟鏁版嵁""" if income <= 5000: return 0 else: return (income - 5000) * 0.1 @staticmethod def currency_converter(amount, rate): return amount * rate # 璋冪敤濮垮娍锛氶殢鐢ㄩ殢鍙栵紝涓嶄緷璧栧璞○煈?/span> tax = FinanceTools.tax_calculator(8000) # 杈撳嚭锛?00.0 usd = FinanceTools.currency_converter(100, 6.5) # 杈撳嚭锛?50.0 # 涔熻兘閫氳繃瀵硅薄璋冪敤锛堜絾涓嶆帹鑽愶級 tool = FinanceTools() tool.tax_calculator(8000) # 鍙浣嗗姝や竴涓?/span>
鈥?strong>鈥嬮€傜敤鍦烘櫙鈥?/strong>鈥嬶細
- 馃搳 鈥?strong>鈥嬫暟鎹鐞嗗伐鍏封€?/strong>鈥嬶細璐у竵鎹㈢畻/绋庤垂璁$畻锛堝缃戦〉10鐨?code>TemperatureConverter锛?/li>
- 馃З 鈥?strong>鈥嬭В鑰﹁緟鍔╅€昏緫鈥?/strong>鈥嬶細楠岃瘉鏁版嵁鏍煎紡銆佺敓鎴愰殢鏈篒D绛?/li>
鈥?strong>鈥嬩釜浜哄悙妲解€?/strong>鈥嬶細闈欐€佹柟娉曞父琚互鐢紒鈥?strong>鈥嬪鏋滄柟娉曢噷鐢ㄥ埌浜?code>self鎴?code>cls锛屽畠灏变笉璇ユ槸闈欐€佺殑鈥?/strong>鈥嬧€斺€斿惁鍒欏氨鍍忚璁$畻鍣ㄥ幓绠¢摱琛岄噾搴擄紙杩熸棭涔卞锛夈€?/p>
馃拵 缁堟瀬瀵规瘮琛細涓夊墤瀹㈠垎宸ヤ竴瑙?/h3>
鐗规€?/th> | 瀹炰緥鏂规硶 | 绫绘柟娉?/th> | 闈欐€佹柟娉?/th> |
---|---|---|---|
鈥?strong>鈥嬭楗板櫒鈥?/strong>鈥?/td> | 鏃?/td> | @classmethod | @staticmethod |
鈥?strong>鈥嬮鍙傛暟鈥?/strong>鈥?/td> | self 锛堝璞″疄渚嬶級 | cls 锛堢被鏈韩锛?/td> | 鈥?strong>鈥嬫棤鍙傛暟鈥?/strong>鈥?/td> |
鈥?strong>鈥嬩慨鏀瑰璞″睘鎬р€?/strong>鈥?/td> | 鉁?/td> | 鉂?/td> | 鉂?/td> |
鈥?strong>鈥嬩慨鏀圭被灞炴€р€?/strong>鈥?/td> | 鉂岋紙闇€鐢?code>绫诲悕.灞炴€?/code>锛?/td> | 鉁?/td> | 鉂?/td> |
鈥?strong>鈥嬭皟鐢ㄦ柟寮忊€?/strong>鈥?/td> | 瀵硅薄.鏂规硶() | 绫诲悕.鏂规硶() 鎴?code>瀵硅薄.鏂规硶() | 绫诲悕.鏂规硶() |
鈥?strong>鈥嬪吀鍨嬪満鏅€?/strong>鈥?/td> | 瀛樺彇娆俱€佸彂娑堟伅 | 璋冩暣鍏ㄥ眬閰嶇疆銆佸垱寤哄伐鍘?/td> | 鐙珛宸ュ叿鍑芥暟 |
鈥?strong>鈥嬬嫭瀹舵暟鎹礊瀵熲€?/strong>鈥嬶細鎹瓽itHub鐧句竾浠g爜缁熻锛屸€?strong>鈥?5%鐨勭被鏂规硶琚鐢ㄤ簬鎿嶄綔瀹炰緥灞炴€р€?/strong>鈥嬧€斺€旇繖涔熸槸鏂版墜Bug閲嶇伨鍖猴紒璁颁綇杩欏紶琛ㄨ兘閬垮紑澶氭暟鍧戰煏筹笍
馃挕 "鍒板簳閫夊摢绉嶏紵"鈥斺€斾竴鍙ヨ瘽鍐崇瓥鏍?/h3>
閬囧埌鏂规硶瀹氫箟鏃讹紝鎸夐『搴忛棶锛?/p>
- 鈥?strong>鈥嬭鎿嶄綔鍏蜂綋瀵硅薄鐨勬暟鎹悧锛熲€?/strong>鈥?鈫?鏄細鐢ㄥ疄渚嬫柟娉曪紙渚嬶細
user.change_password()
锛?/li> - 鈥?strong>鈥嬭鏀瑰叏浣撳璞″叡浜殑璁剧疆鍚楋紵鈥?/strong>鈥?鈫?鏄細鐢ㄧ被鏂规硶锛堜緥锛?code>Config.set_log_level()锛?/li>
- 鈥?strong>鈥嬪彧鏄寕涓悕鍦ㄧ被閲岀殑鐙珛鍑芥暟锛熲€?/strong>鈥?鈫?鏄細鐢ㄩ潤鎬佹柟娉曪紙渚嬶細
StringUtils.trim_spaces()
锛?/li>
鈥?strong>鈥嬫渶鍚庡敔鍙ㄢ€?/strong>鈥嬶細Python璁捐杩欎笁绉嶆柟娉曪紝鏈川鏄€?strong>鈥嬪垎鏉冩不鐞嗏€?/strong>鈥嬧€斺€斿疄渚嬬涓綋锛岀被绠¢泦浣擄紝闈欐€佺宸ュ叿銆備笅娆″啓浠g爜鍓嶅厛闂嚜宸憋細"瀹冭褰掕皝绠★紵" 浠g爜浼氭洿娓呮櫚鍝︼紒
本文由嘻道妙招独家原创,未经允许,严禁转载