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

歡迎訪問 生活随笔!

生活随笔

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

python

python基础-类

發布時間:2023/12/9 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python基础-类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實例屬性和類屬性

類中,沒有self指定的是類屬性,有self指定的是實例屬性。類中的方法是類屬性。
類和實例都是名字空間。類是類屬性的名字空間,實例時實例屬性的名字空間。
可以通過類訪問類屬性,通過實例訪問實例屬性。如果實例沒有同名屬性的話,也可以通過實例訪問類屬性。
比如類C,有version屬性,可以通過類訪問:C.version。創建實例c后,實際上訪問c.version會失敗,但是,會首先在實例中搜索version,然后在類中搜索,再到繼承樹中的基類。

訪問類屬性

class C(object):version = 1.2 # 類屬性 c=C() C.version # 通過類訪問類屬性 c.version # 通過實例訪問類屬性

類屬性為不可變對象,通過實例訪問類屬性

C.version += 1 # 通過類更改類屬性 c.version = 1 # 不能通過實例更改類屬性,這樣會創建一個實例屬性 c.version += 1 # 為2.2,以類屬性的值創建實例屬性,等于c.version = C.version + 1

類屬性為可變對象,通過實例訪問類屬性

class Foo(object):x=foo = Foo() foo.x # {2003:'poe2'}foo.x[2004] = 'valid path' foo.x # {2003:'poe2', 2004:'valid path'}Foo.x # {2003:'poe2', 2004:'valid path'} 通過實例修改了類屬性del foo.x # 失敗

類屬性持久化

通過實例屬性類修改類屬性很危險。
類屬性是靜態成員,類屬性的修改會影響所有實例。

綁定和方法調用

方法是類內部定義的函數,方法是類屬性不是實例屬性。綁定主要與方法調用有關。
方法只有在類擁有實例時,才能被調用。存在一個實例時,方法才認為是綁定到哪個實例,沒有實例時就是未綁定的。
方法有self參數,用于引用方法所綁定的實例。
調用綁定方法
有一個MyClass類,帶self參數的foo方法,實例mc。通過實例調用方法就是調用綁定方法,mc.foo()。
調用非綁定方法
調用一個還沒有任何實例的類中的方法,也就是通過類調用類方法。需要明確的傳遞self參數。場景:派生一個子類,并且覆蓋父類的方法,需要調用父類中的方法。

class SubClass(FatherClass):def __init__(self, nm,ph):FatherClass.__init__(self,nm)self.ph = ph

靜態方法和類方法

python靜態方法特性之前,通過在全局名字空間創建函數替代。
通常方法需要self參數,綁定方法調用時,自動傳遞。對于類方法,需要的是類,通常名為cls,自動傳遞給類方法。

staticmethod()和classmethod()內建函數

經典類中使用靜態方法和類方法

class TestStaticMethod:def foo():print 'calling static method foo()'foo = staticmethod(foo)class TestClassMethod:def foo(cls):print 'calling class method foo()'foo = classmethod(foo)tsm = TestStaticMethod() TestStaticMethod.foo() # 通過類調用 tsm.foo() # 通過實例調用 tcm = TestClassMethod() TestClassMethod.foo() # 通過類調用 tcm.foo() #通過實例調用

使用函數修飾符

class TestStaticMethod:@staticmethoddef foo():print 'calling static method foo()' class TestClassMethod:@classmethoddef foo(cls):print 'calling class method foo()'

組合

大的類包含其他小類的實例,類之間顯著不同,小類是大的類所需要的組件。

class P:'P class'def __init__(self):print 'created an instance of ', self.__class__.__name__ class C(P):passp=P() # 父類實例 p.__class__ P.__bases__ p.__doc__c = C() c.__class__ C.__bases__ C.__doc__ #文檔字符串不能繼承父類

總結

以上是生活随笔為你收集整理的python基础-类的全部內容,希望文章能夠幫你解決所遇到的問題。

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