所以,我不知道什么是靜態方法,所以我搜索了一下,然后做了這個
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
print(Calculator.add(3,4))
print(Calculator.sub(5,7))
我的問題是為什么即使沒有 @staticmethod 裝飾器 sub 方法也能在靜態背景關系中作業?它是否與 sub 方法不使用 self.num1 或 self.num2 的事實有關,或者我只是實作了這個錯誤?
uj5u.com熱心網友回復:
您看不到差異,因為您沒有實體化物件(Calculator是類,Calculator()是物件)。
請參閱以下代碼段:
class Calculator:
@staticmethod
def add(x,y):
result = x y
return result
def sub(x,y):
result = x-y
return result
print(Calculator().add(3,4))
print(Calculator().sub(5,7))
呼叫add將作業,但不會sub收到額外的第一個引數。
在評論中說明您的問題的另一個示例:
class Calculator:
@staticmethod
def add(x,y):
result = x y
return result
def sub(self,x,y):
result = x-y
return result
print(Calculator().add(3,4))
print(Calculator().sub(5,7))
print(Calculator.sub(None,5,7))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/388025.html
上一篇:Debian上的Apache-升級到PHP8.1-phpinfo()未顯示新版本并與mpm沖突
下一篇:需要單個列中每個名稱的總和
