我遇到了一種情況,我從另一個靜態方法中調用一個類的靜態方法。可以肯定的是,我不提出一個X-Y問題,我試圖給出一些背景知識。在python中調用類中的靜態方法
我有一個類,它包含一個數據容器和幾個方法來轉換容器內的數據。正如我也想轉換器從沒有一個類的實例外調用,我選擇靜態方法:
class SomeClass(object):
def __init__(self,some_data):
self.data = some_data
@staticmethod
def convert_1(data_item):
return 1+data_item
@staticmethod
def convert_2(data_item):
return 2*data_item
現在我能做的SomeClass.convert_1(data_item)
無需創建SomeClass
一個實例。
比方說,我想在SomeClass
裏面有一個方法,它可以連續進行兩次轉換,並且也希望將該方法作爲一種靜態方法。
我可以做
@staticmethod
def combined_convert(data_item):
data_item = SomeClass.convert_1(data_item)
data_item = SomeClass.convert_2(data_item)
return data_item
內SomeClass
?這種感覺是錯誤的,因爲我在自己的定義中稱這個類,但是我不能想出另一種「更加pythonic」的方式。
該類是由您執行'combined_convert'時所定義的,因此沒有問題。 – thebjorn
您可以始終使用方法引用類的*實例*(使用'self');爲什麼要引用這個類是一個問題?它只是'class'語句中的頂級代碼,不能引用正在構建的類。 – chepner
您是否嘗試過在模塊中使用頂級函數?看起來你正在嘗試使用classespacing – Felk