[英]Cast base class to derived class python (or more pythonic way of extending classes)
[英]Pythonic way of extending base class
我正在嘗試使用一些添加的構造函數來創建類似類的Pandas Dataframe:
class ExtendedDataFrame(DataFrame):
def __init__(self):
super(ExtendedDataFrame, self).__init__() # without this I get a pandas error
@classmethod
def contructor1(cls, filename):
"Create DataFrame from file"
df = pd.read_csv(filename) # returns a DataFrame
df.__class__ = cls
return df
# more methods extending Dataframe ...
現在,我可以執行以下操作:
ExtendedDataFrame.constructor1('table_xx.txt') # returns an ExtendedDataFrame instance
我想要的是能夠以這種方式獲取我的Table類的實例:
ExtendedDataFrame('table_xx.txt')
推薦的方法是什么?
換句話說,我試圖制作一個ExtendedDataFrame
類,但是某些熊貓的方法(如read_csv
返回一個DataFrame
,並且我想返回一個ExtendedDataFrame
。
在__init__
方法中使用參數擴展,調查提供的參數,如果找到一個字符串參數,則在內部執行Table.constructor1('string')
。
另一方面,更仔細地看您的問題,我想知道您想在這里實現什么。 到目前為止,您constructor1
類方法是沒有意義的。 您想實現哪種功能,以至於df = pd.read_csv(...)
對您來說還不夠?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.