激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

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

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

2021-08-13 00:48levi Python

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

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

1、@staticmethod和@classmethod區(qū)別

@staticmethod:靜態(tài)方法

@classmethod:類方法

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

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

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

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

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

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

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

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

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

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

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作為第一個參數(shù)隱式傳遞。
a.foo (1)
# executing foo(<__main__.A object at 0xb7dbef0c>,1)
#對于類方法,對象實例的類將隱式地作為第一個參數(shù)而不是傳遞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(類)都不會作為第一個參數(shù)隱式傳遞。它們的行為類似普通函數(shù),除了你可以從實例或類中調用它們
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>

總結一下彼此的調用區(qū)別:

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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产亚洲精品久久 | 色婷婷a v | 日韩视频在线视频 | 亚洲av一级毛片特黄大片 | 日韩在线欧美在线 | 亚洲精品aⅴ中文字幕乱码 中文字幕欧美在线 | 免费观看一区二区三区 | arabxxxxvideos| 国产剧情在线观看一区二区 | 久产久精品 | 午夜视频在线观 | 成人午夜视频在线观看免费 | 美女黄色影院 | 色骚综合 | av噜噜在线 | 国产免费福利视频 | 国产免费福利视频 | 在线免费视频a | 久久精品无码一区二区日韩av | 美女福利视频国产 | 羞羞羞羞视频 | 欧美日韩在线中文 | 国产理论视频在线观看 | 国产成人午夜高潮毛片 | 国产成人精品一区在线播放 | 毛片免费在线观看视频 | 国内精品久久久久影院不卡 | 亚洲小视频在线 | 男男啪羞羞视频网站 | 性猛aa久久久 | 毛片电影网址 | 免费国产成人高清在线看软件 | 国产成人高潮免费观看精品 | 成人男女啪啪免费观看网站四虎 | 久久久资源网 | 亚洲日本韩国精品 | 亚洲视频在线网 | 美女毛片在线观看 | 欧美成人精品一区二区 | 日日爱夜夜操 | 亚洲aⅴ免费在线观看 |