日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python中纠结处之其一—— 静态方法、类方法

發布時間:2025/7/14 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中纠结处之其一—— 静态方法、类方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  轉身投入Python有一周左右的日子了。這一周不能算是很仔細的去研究它,用比喻的話,還在學習騎車的階段,未及拆車和造車這樣高深。

  但此時就有了讓我產生糾結之處。查閱了一些已對這點做比較的博文,對其有所領悟。其實,問題是先來自于Python具有魅力的Decorator。其內置的三個Decorator讓我有些許不解。

@staticmethod

@classmethod

@proptey

  本身來自于Java的先入為主,讓我對類方法和靜態方法沒了區別的概念。但在前人的博文中找到一個例子,讓我略有了些領悟

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)"%x

a
= A()

a.foo(
1)

a.class_foo(
1)
A.class_foo(
1)

a.static_foo(
1)
A.static_foo(
1)

  輸出的結果為

executing foo(<__main__.A object at 0x004E0730>,1)
executing class_foo(
<class '__main__.A'>,1)
executing class_foo(
<class '__main__.A'>,1)
executing static_foo(
1)
executing static_foo(
1)

  首先,實例方法,很清楚,打印了該實例化的對象的信息(在內存中的地址)

  然后是類方法,cls這個參數打印出的是 類A這個對象(Python中任何都是對象),不管是否是實例化的調用

  最后是靜態方法,與調用也無關,并且這個方法不依賴任何對象。

  一些粗淺的認識:

  • 實例化以后,類方法和靜態方法也可以使用(似乎是廢話)
  • 類方法和靜態方法不能訪問需要實例化的屬性(似乎又是……)
  • 實例方法是由一個類實例化后產生的,所以能訪問實例化后的對象的屬性
  • 因為在Python中,類也是對象,所以,類方法相對靜態方法的一大特點是可以訪問類具有的屬性,但是靜態方法不行 !

? ? ? 似乎就是這些領悟,后面遇到問題再來更新吧

  

轉載于:https://www.cnblogs.com/artoruis/archive/2011/09/13/static_class_method.html

總結

以上是生活随笔為你收集整理的Python中纠结处之其一—— 静态方法、类方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。