簡體   English   中英

Python:將self傳遞給類方法或參數

[英]Python: Passing self to class methods or arguments

我正在使用具有很多參數和方法的類在python項目中工作。 為了降低復雜性,我一直在編寫如下方法:

def foo(self):
    return self.parameter1 * self.parameter2

顯式傳遞參數是否是更好的做法?

def foo(self, parameter1, parameter2):
    return parameter1 * parameter2

之所以這樣,是因為我發現在不測試整個類的情況下很難測試該類中的功能。

為了降低復雜度,我一直在寫這樣的方法

此目的的假設是錯誤的,如果您定義實例方法,則應該使用self(實例變量)。

根據pylint:method_could_be_a_function :如果一個函數可以在沒有self(實例變量)的情況下運行,那么它應該是一個單獨的函數,而不是實例方法。

例如:

class A(object):

    def __init__(self):
        self.some_instance_var

    def some_instance_method(self):
        #code here is suggested to be related to self(instance variable), eg:
        return self.some_instance_var

最好將它作為實例方法放入類中。

class A(object):

    ...

    def foo(self):
        return self.parameter1 * self.parameter2

而且這應該是一個普通函數,而不是實例方法。 因為函數的內容與自身(實例變量)無關。

def foo(self, parameter1, parameter2):
    return parameter1 * parameter2

您的問題做出了一些與OO設計不一致的假設。

如果parameter1parameter2 不是 self表示的對象的固有屬性,則需要傳遞它們。 但是,如果它們 self固有屬性,則它們應該已經與self相關聯,不需要傳遞。

OO設計(通常是對象)的主要要點是將描述對象的數據與在對象上工作的方法明確地關聯在一起。

回答:

對對象內在的任何事物都使用一個self引用,並將那些不是的值作為參數傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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