从另一个仅包含自身的类中调用类的实例方法

时间:2019-09-01 19:31:37

标签: python-3.x class self

checkProfile (user) {
    let p = {
      username: user,
      key: '00'
    }
    return this.postMethod(p).subscribe(
      d => {
        return d['code'] == '000' ? true : false;
      }
    )
  }

我正在尝试获取class Cust(object): def __init__(self,cust_id,cust_day,cust_amt): self.id=cust_id self.total=0 self.days=[cust_day] self.amounts=[cust_amt] def add_Purchases(self,day,amount): self.amounts.append(amount) self.days.append(day) print("add Purchase Executed for ",self.id,self.amounts) print(self.get_Total_Sales()) def get_Total_Sales(self): total = sum(self.amounts) return total class DB(object): def __init__(self,filedir): self.dir=filedir self.DB_cust={} self.createDatabase(filedir) def importFile(self,file): file.readline() for line in file: val=line.split(",") customerID=data[0] if customerID in self.DB_cust: self.DB_cust[customerID].add_Purchases(val[2],float(val[3])) else: self.DB_cust[customerID]=Cust(val[0],val[1],val[2],float(val[3])) 的ID。我从数据库类maximum value of total的实例方法中调用get_total_sales()

get_Max_ID()

这显然会导致

  

TypeError:get_Total_Sales()缺少1个必需的位置参数:“ self”

如果我通过get_Max_ID传递def get_Max_ID(self): print("Max Sale ID here") Cust.get_Total_Sales() 。它会通过数据库本身而不是Cust。我不确定在从DB类调用Cust的自我时如何传递它。

说明-get_Total_Sales()获取每个客户的总数,但是我试图从所有客户实例中获取最大的总数。 (我还没有编写那部分代码,它可以最大程度地发挥作用)

1 个答案:

答案 0 :(得分:1)

按照OP在问题注释中要说的去做,他们可能想要这样的东西:

max([cust.get_Total_Sales() for id, cust in self.DB_cust.items()])

它将遍历客户字典,并且对于每对键/值对(idcust)将调用并返回Cust的{​​{1}}

然后get_Total_Sales()将从生成的值列表中获取所有单个结果,并仅返回最大值。

如评论中所问,尽管我认为没有理由不理解:

max