Python 類方法 靜態方法

2021-07-26 11:12:27 字數 1379 閱讀 7293

1、我們已經討論了類/物件可以擁有像函式一樣的方法,這些物件方法與函式的區別只是乙個額外的self變數

#

-*- coding:utf-8 -*-

#!/usr/bin/python

#filename: method.py

class

person:

grade=1

def__init__

(self,name):

self.name =name

def sayhi(self):#

加self區別於普通函式

print

'hello, your name is?

',self.name

@staticmethod

#宣告靜態,去掉則編譯報錯;還有靜態方法不能訪問類變數和例項變數

def sayname():#

使用了靜態方法,則不能再使用self

print

"my name is king"#

,grade,#self.name

@classmethod

#類方法

defclassmethod(cls):

print("

class method")

p = person("

king")

p.sayhi()

p.sayname()

p.classmethod()

person.classmethod()

輸出:hello, your name

is? king

my name

isking

class

method

class method

2、靜態方法

要在類中使用靜態方法,需在類成員函式前面加上@staticmethod標記符,以表示下面的成員函式是靜態函式。使用靜態方法的好處是,不需要定義例項即可使用這個方法。另外,多個例項共享此靜態方法。 

3、 類方法

類方法與普通的成員函式和靜態函式有不同之處,在接觸的語言中好像也沒見過這種語義,看它的定義: 

乙個類方法就可以通過類或它的例項來呼叫的方法, 不管你是用類來呼叫這個方法還是類例項呼叫這個方法,該方法的第乙個引數總是定義該方法的類物件。 

記住:方法的第乙個引數都是類物件而不是例項物件. 

按照慣例,類方法的第乙個形參被命名為 cls.任何時候定義類方法都不是必須的(類方法能實現的功能都可以通過定義乙個普通函式來實現,只要這個函式接受乙個類物件做為引數就可以了).  

python中實現靜態方法和類方法都是依賴於python的修飾器來實現的。 物件方法有self引數,類方法有cls引數,靜態方法是不需要這些附加引數的。

**:

Python 靜態方法 類方法

一 靜態方法 乙個不能訪問例項變數和類變數的方法,它與類唯一的關聯就是需要通過類名來呼叫這個方法。class person object def init self,name self.name name def eat self print s is eating self.name static...

python靜態方法 類方法

常規 1 class dog object 2def init self,name 3 self.name name45 defeat self 6print s is eating self.name 78 d1 dog lele 9 d1.eat 1.靜態方法 名義上由類管理,而實際在呼叫時,需...

Python普通方法 靜態方法 類方法

coding utf 8 普通方法,類方法,靜態方法的區別 metaclass type class tst name tst data this is data 普通方法 defnormalmethod self,name print self.data,name 類方法,可以訪問類屬性 clas...