一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 詳解Python中@staticmethod和@classmethod區別及使用示例代碼

詳解Python中@staticmethod和@classmethod區別及使用示例代碼

2021-08-13 00:48levi Python

這篇文章主要介紹了詳解Python中@staticmethod和@classmethod區別及使用示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

本文主要介紹Python中,class(類)的裝飾器@staticmethod和@classmethod的使用示例代碼和它們的區別。

1、@staticmethod和@classmethod區別

@staticmethod:靜態方法

@classmethod:類方法

一般來說,要使用某個類的方法,需要先實例化一個對象再調用方法。

而使用@staticmethod或@classmethod,就可以不需要實例化,直接通過類名就可以實現調用

使用:直接類名.方法名()來調用。@staticmethod和@classmethod都可以直接類名.方法名()來調用,

@staticmethod不需要表示自身對象的self和自身類的cls參數(這兩個參數都不需要添加),就跟使用函數一樣。

使用:直接類名.屬性名或直接類名.方法名。

@classmethod也不需要self參數,但第一個參數需要是表示自身類的cls參數。

使用:直接類名.屬性名或直接類名.方法名。

兩者定義的裝飾器調用方法一樣,但是@classmethod裝飾器定義的類方法需要傳入類參數cls。

@staticmethod中要調用到這個類的一些屬性方法,只能直接類名.屬性名或類名.方法名。

而@classmethod有cls參數,可以來調用類的屬性,類的方法,實例化對象等,避免硬編碼更靈活。

2、@staticmethod和@classmethod使用示例代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class A(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)" %
a = A()
#通過實例調用方法,對象實例a作為第一個參數隱式傳遞。
a.foo (1)
# executing foo(<__main__.A object at 0xb7dbef0c>,1)
#對于類方法,對象實例的類將隱式地作為第一個參數而不是傳遞self
a.class_foo(1)
# executing class_foo(<class '__main__.A'>,1)
#使用這個類調用class_foo
A.class_foo(1)
# executing class_foo(<class '__main__.A'>,1)
#對于staticmethods,self(對象實例)和cls(類)都不會作為第一個參數隱式傳遞。它們的行為類似普通函數,除了你可以從實例或類中調用它們
a.static_foo(1)
# executing static_foo(1)
A.static_foo('hi')
# executing static_foo(hi)
print(a.foo)
# <bound method A.foo of <__main__.A object at 0xb7d52f0c>>
print(a.class_foo)
# <bound method type.class_foo of <class '__main__.A'>>
print(a.static_foo)
# <function static_foo at 0xb7d479cc>
print(a.static_foo)
# <function static_foo at 0xb7d479cc>

總結一下彼此的調用區別:

詳解Python中@staticmethod和@classmethod區別及使用示例代碼

到此這篇關于詳解Python中@staticmethod和@classmethod區別及使用示例代碼的文章就介紹到這了,更多相關Python @staticmethod和@classmethod內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cjavapy.com/article/729/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产我不卡 | 视频一区二区三区欧美日韩 | 特黄a大片免费视频 | 99在线在线视频免费视频观看 | 黑人性xxxⅹxxbbbbb | 亚洲黄色天堂 | 给我免费的视频在线观看 | 亚洲国产第一区二区三区 | 国产成人高清亚洲一区91 | 午夜一级| 成人国产第一区在线观看 | 免费抽搐一进一出印度 | 国色天香社区视频免费高清在线观看 | 亚洲国产欧美另类 | 日本高清中文字幕 | 潘金莲西门庆一级淫片aaaaaa | 精品国产欧美精品v | 国产图片综合区 | 久久中文骚妇内射 | 日韩中文字幕在线不卡 | 视频二区 素人 制服 国产 | 亚洲 欧美 国产 日韩 字幕 | 皇上撞着太子妃的秘密小说 | 亚洲天堂男人 | 亚洲国产黄色 | 国产suv精品一区二区四区三区 | 天天视频官网天天视频在线 | 日韩欧美一区二区不卡 | 亚洲国产在线2o20 | 美女扒开粉嫩尿口漫画 | s8sp加密路线和免费路线首页 | 国产精品久久99 | 四虎精品成人a在线观看 | 久久久久国产一级毛片高清片 | 视频在线观看国产 | 亚洲人成在线观看一区二区 | 娇小XXXXX第一次出血 | girlfriend动漫在线播放 | 邪恶肉肉全彩色无遮琉璃神社 | 99精品在线免费 | a亚洲天堂 |