如何在Python中的类内def中共享变量

时间:2018-02-09 06:24:05

标签: python pandas class

class Dataframe: #Recommended to instatiate your dataframe with your csv name.
    """
    otg_merge = Dataframe("/Users/zachary/Desktop/otg_merge.csv") #instaiate as a pandas dataframe
    """
    def __init__(self, filepath, filename = None):
        pd = __import__('pandas') #import pandas when the class is instatiated 
        self.filepath = filepath
        self.filename = filename

    def df(self): #it makes the DataFrame
        df = pd.read_csv(self.filepath, encoding = "cp949", index_col= 0)  #index col is not included
        return df

    def shape(self): #it returns the Dimension of DataFrame
        shape = list(df.shape)
        return shape

    def head(self): #it reutrns the Head of Dataframe
        primer = pd.DataFrame.head(df)
        del primer["Unnamed: 0"]
        return primer

    def cust_types(self): #it returns the list of cust_type included in .csv
        cust_type = []
        for i in range(0, shape[0]):
            if df.at[i, "cust_type"] not in cust_type: #if it's new..
                cust_type.append(df.at[i, "cust_type"]) #append it as a new list element
        return cust_type

我正在做包装的pandas功能包装,不一定需要知道熊猫。

如果看到代码,则在第三个def处,shape将形状返回为[11000,134]的列表,作为xdim和ydim。

现在我想在最后的def cust_types中再次使用该形状,但是,它返回的形状未定义。

如何在同一个类中的defs之间共享变量“share”?

  • 有趣的是,我没有做到第n次,但df是从第二个df共享到第三个形状而没有错误

1 个答案:

答案 0 :(得分:1)

首先是“自我”。在尝试一些python oops教程后你会知道的所有属性。你可能会错过的另一个问题是

  

def df(self):
    df = pd.read_csv(self.filepath,encoding =“cp949”,index_col = 0)
    返回df

这里,如果变量名不是实例属性,则方法名和变量名采用相同的名称,因为它不是。但如果你在前面加上“自我”。并将其作为实例属性,您的实例属性将是self.df,并且在第一个函数调用self.df()之后它不能是函数。