python的class用法 Python中的classmethod和staticmethod有什么具體用途?
Python中的classmethod和staticmethod有什么具體用途?classmethod和staticmethod在不需要實例化的情況下,能夠讓類方法在類以外直接調(diào)用。區(qū)別在以下兩個方面
Python中的classmethod和staticmethod有什么具體用途?
classmethod和staticmethod在不需要實例化的情況下,能夠讓類方法在類以外直接調(diào)用。
區(qū)別在以下兩個方面:
1.classmethod類方法,必須把類作為第一個參數(shù),「可以訪問類變量」,可以通過實例名或類名訪問;
2.staticmethod靜態(tài)方法,不強(qiáng)制傳入self或者cls,對類和實例都一無所知(相當(dāng)于把類方法變成一個普通的方法,與類無關(guān)),「不能訪問類變量」,「也不能訪問實例變量」;可以通過實例名或類名訪問。
具體用途為:
1.classmethod類方法,依賴self或者cls傳參,所以必須寫在類里,與類強(qiáng)關(guān)聯(lián),可以在類之外,訪問類變量;
2.staticmethod靜態(tài)方法,完全獨立于類,因此不能訪問類方法。
就那么簡單,根據(jù)是否需要訪問類變量,取決于是否需要訪問類方法。
說通俗點,就是方便在沒有實例化的情況下,直接調(diào)用類方法,上述兩個東西都能實現(xiàn)該目的。
python類里面的class是什么意思?。壳??
python這方面很靈活。其實java也一樣允許這樣子。你幾乎可以在任何情況下做任何事情。通常classMeta可以放在外面。不過,這樣它就不能直接訪問父類的一些屬性了。所以在python里class如果放在另一個class里面,通常并不是為了隱藏這個class,并不是讓別人看不到它。而因為它需要父類里的一些屬性。需要共享。另外直接在類里定義的一些變量,比如queryset,也是屬于類全局級的。只要引用了這個類,即使沒有初始化,這些變量也已經(jīng)實例化。這個有些象是java里static的全局定義結(jié)果。我們通常用這個方法來在不同的函數(shù)變量間共享一部分?jǐn)?shù)據(jù)。同時又不需要初始化一個實例并用指針指向這一部分?jǐn)?shù)據(jù)。而是通過類名直接引用。比如下面的一個用法classConfig:passConfig.user_name="xxx"Config.password="yyyy"這樣。只要你在當(dāng)前模塊里,通過Config就可以引用到user_name和password,而不需要global這個修飾符。
python class和def的區(qū)別?
class是數(shù)據(jù)類型中的類,它封裝了一些數(shù)據(jù)成員和操作方法,以供類或子類的實例使用;
而def是define(定義)的簡寫,通常用于聲明接下來的是一個定義。