[英]Python 3 self. attributes in method
假設有一個帶有屬性和方法的簡單類。
class c:
def __init__(self, a, b):
self.a = a
self.b = b
def f(self):
return(self.a + self.b)
plus = c(2, 2)
print(c.f(plus))
print(c(2, 2).f())
如果我打印此圖像,首先創建一個對象,則一切正常。 但是,當我將屬性傳遞給方法本身時,會出現錯誤。
print(c.f(2, 2))
因此,是否可以像普通函數一樣將屬性傳遞給方法本身而不創建對象? 我是在做錯什么,還是在這種情況下應該使用普通函數而不是方法? 謝謝你們的幫助;)
您可以使用staticmethod
:
class c:
def __init__(self, a, b):
self.a = a
self.b = b
@staticmethod
def f(*args):
return sum(args)
print(c.f(2, 2))
輸出:
4
如果要避免創建類的實例,可以使用@staticmethod
裝飾器:
class C:
@staticmethod
def f(a, b):
return a + b
>>> C.f(2, 2)
4
我還建議遵循PEP 8約定並使用CapWords命名類。
將類視為模子。 您實際上並沒有與模具本身進行交互,而是使用模具來創建可以與之交互的對象。 為了對對象做某事,您必須首先創建它。 這稱為實例化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.