Hier ist ein einfaches Beispiel:Wenn ich eine Klasse in Python erweitern, wie wird das Ergebnis automatisch als neue Klasse zurückgegeben?
import pandas as pd
class test_pd(pd.DataFrame):
def __init__(self):
super().__init__()
def my_copy(self):
return self.copy()
if __name__=='__main__':
a = test_pd() #a has a.my_copy()
b = a.my_copy() #b does not have b.my_copy()
Ich möchte die test_pd.my_copy()
Funktion eine test_pd
Klasse zurückkehren, wenn ich copy()
Funktion, die von Pandas ist genannt. Technisch kann ich immer etwas wie return test_pd(self.copy())
verwenden. Aber ich hoffe, es könnte eine intelligentere Lösung geben, so dass ich diese Änderung nicht jedes Mal vornehmen muss, wenn ich eine ähnliche Pandas-Funktion aufrufen möchte.
PS: Ich verstehe, dass DataFrame.copy()
gibt ein DataFrame
Objekt, aber ich frage mich nur, weil meine eigene Klasse erweitert die DataFrame
Klasse, ob es möglich ist, meine Aufgabe auch automatisch DataFrame
Objekt erstreckt, so, wenn die DataFrame
Funktion einen zurück DataFrame
Objekt, es wird ein test_pd
Objekt zurückgegeben, wenn in test_pd
Klasse aufgerufen.
Nein, Sie müssen explizit angeben, was diese Methode zurückgeben soll. – jonrsharpe