Proper way to extend Python class
Proper way to extend Python class I'm looking to extend a Panda's DataFrame, creating an object where all of the original DataFrame attributes/methods are in tact, while making a few new attributes/methods available. I also need the ability to convert (or copy) objects that are already DataFrames to my new class. What I have seems to work, but I feel like I might have violated some fundamental convention. Is this the proper way of doing this, or should I even be doing it in the first place? import pandas as pd class DataFrame(pd.DataFrame): def __init__(self, df): df.__class__ = DataFrame # effectively 'cast' Pandas DataFrame as my own the idea being I could then initialize it directly from a Pandas DataFrame, e.g.: df = DataFrame(pd.read_csv(path)) You're mixing up inheritance and composition. Your DataFrame class both "has a" and "is a" pd.DataFrame . – mypetlion Jun 2...
