簡體   English   中英

Python 3自我。 方法中的屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM