所以,我不知道什么是靜態方法,所以我搜索了一下,然后做了這個
class Calculator:
def __init__(self,num1,num2):
self.num1 = num1
self.num2 = num2
@staticmethod
def add(x,y):
result = x y
return result
def sub(x,y):
result = x-y
return result
Calculator.add = staticmethod(Calculator.add)
print(Calculator.add(3,4))
print(Calculator.sub(5,7))
如您所見,即使沒有執行第 15 行之類的操作,第 19 行仍然有效,我只想知道如何使用靜態方法,據我所知,靜態方法允許您在不創建實體/變數的情況下呼叫它它。如果有的話,第 19 行如何仍然有效(沒有第 15 行,而是第 19 行?)
基本上,我在問為什么即使沒有 staticmethod 裝飾器, sub 方法也能在靜態背景關系中作業?
uj5u.com熱心網友回復:
裝飾器@staticmethod就夠了,你不需要,line 15因為靜態方法不需要實體來呼叫方法。
一旦方法被標記為靜態,就可以ClassName.StaticMethodName()直接在代碼中通過call來呼叫它。
資料庫連接器的示例:
class DBConnector:
@staticmethod
def connect(connection_str):
# logic
DBConnector.connect({ip: '10.133.64.3',
user: 'xyz',
pass: 'something'})
uj5u.com熱心網友回復:
好吧@staticmethod 可能不像你想的那樣作業,
正如您所提到的,您仍然可以直接呼叫它而無需創建實體,因為該方法仍然是該類的藝術。
但是它不能用作實體方法。
所以這段代碼會失敗:
calc = Calculator(18,10)
calc.sub(10,10) #fail
靜態方法不self作為引數,這就是像這樣呼叫它們失敗的原因。
可以在類(例如 Cf())或實體(例如 C().f())上呼叫靜態方法。此外,它們可以作為常規函式呼叫(例如 f())。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/388047.html
