當(dāng)前位置:
首頁(yè) >
python笔记: staticmethod classmethod
發(fā)布時(shí)間:2025/4/5
30
豆豆
生活随笔
收集整理的這篇文章主要介紹了
python笔记: staticmethod classmethod
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 前言
一般來(lái)說(shuō),如果我們要使用類(lèi)中的方法,一般是實(shí)例化類(lèi)中的對(duì)象,然后通過(guò)示例來(lái)調(diào)用函數(shù),比如:
class myClass(object):def __init__(self,x):self.x=xdef printx(self):print(self.x)c=myClass(4) c.printx() # 4這時(shí)候,如果我們不實(shí)例化對(duì)象,直接用類(lèi)名來(lái)調(diào)用函數(shù),是不行的
myClass.printx()''' TypeError Traceback (most recent call last) <ipython-input-61-249ab211dc29> in <module> ----> 1 myClass.printx()TypeError: printx() missing 1 required positional argument: 'self' '''2 classmethod
????????類(lèi)方法與類(lèi)一起使用,因?yàn)樗膮?shù)始終是類(lèi)本身。(實(shí)例的參數(shù)是看不到的)
? ? ? ? 但是,如果我們希望同時(shí)與類(lèi)交互呢?我們可以使用@classmethod裝飾器來(lái)創(chuàng)建類(lèi)方法
class myClass(object):x=1def __init__(self):self.x=x@classmethoddef printx(class_obj):print(class_obj.x)c=myClass() c.printx() #1 myClass.printx() #1????????這樣的好處是: 不管這個(gè)方式是從實(shí)例調(diào)用還是從類(lèi)調(diào)用,它都用第一個(gè)參數(shù)把類(lèi)傳遞過(guò)來(lái).
3 staticmethod
????????有一些跟類(lèi)有關(guān)系的功能,但在運(yùn)行時(shí)又不需要實(shí)例和類(lèi)參與。在這種情況下。可以用到靜態(tài)方法
????????靜態(tài)方法對(duì)類(lèi)一無(wú)所知,只處理參數(shù)。
class myClass(object):def __init__(self,x):self.x=x@staticmethoddef printx():print('hello')c=myClass(1) c.printx() #hellomyClass(1).printx() #hello總結(jié)
以上是生活随笔為你收集整理的python笔记: staticmethod classmethod的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pytorch笔记:torch.nn.G
- 下一篇: pip 另一种安装方法:python s