類方法與靜態方法

2021-10-25 01:36:56 字數 1096 閱讀 8435

類方法和靜態方法

class person(object):

__slots__ = ("name","age")

# 類屬性

num = 0

# 建構函式

def __init__(self,name,age):

# 例項屬性

self.name = name

self.age = age

# 例項函式:形參列表的第乙個引數必須為self,表示當前物件

def show(self):

print("show",self)

# 類函式:形參列表的第乙個引數為cls,表示當前類

# 使用@classmethod裝飾器修飾乙個函式,該函式被稱為類函式

# cls和self類似,都不是關鍵字,可以是任意的識別符號

@classmethod

def func1(cls):

print("func11", cls)

# cls就相當於是當前類person,所以可以通過cls建立物件

c = cls("bbb",6)

# 在類函式中呼叫例項 函式,必須先通過cls建立物件,然後再呼叫

# c.show()

# 靜態函式

@staticmethod

def func2():

print("func~~2222")

p = person("aaa",5)

# 例項函式只能通過物件呼叫

p.show()

# 類函式可以通過類名或者物件呼叫

p.func1()

person.func1()

# 靜態函式可以通過類名或者物件呼叫

p.func2()

person.func2()

'''show <__main__.person object at 0x000002c03c531518>

func11 func11 func~~2222

func~~2222

'''# 如果需要在函式中建立當前類的物件,則選用類函式

# 如果需要封裝乙個工具類,建議使用類函式或者靜態函式

類方法與靜態方法

方法是通過 def 申明創造的函式 方法的工作方式與簡單的函式一樣。但是有種例外的情況 方法的第乙個引數接受的是例項物件。1,例項方法 def f self,arg 2,類方法 使用類屬性 classmethod defcf cls,arg 3,靜態方法 不包含任何有關類的資訊 staticmeth...

C 靜態類 靜態方法與非靜態方法比較

在類 class 上加入static修飾,表示該類無法被例項化,並將該類中,無法例項化變數或函式 靜態類的主要特性 所以,可以在普通類中新增靜態方法,但是靜態類中的方法 變數都必須是靜態的。一 靜態方法 使用static修改的方法就是靜態方法,否則就是非靜態方法。二 1 靜態成員屬於類的所以,非靜態...

類方法,靜態方法

coding utf 8 class test object walk 為普通方法只能被物件instance呼叫,play 為靜態方法可以被物件和classname呼叫,eat為類方法,可以被物件和classname呼叫。此外pep8中一種程式設計風格,self通常用作例項方法的第一引數,cls通常...