【发布时间】:2019-09-01 19:31:37
【问题描述】:
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]))
我正在尝试获取 maximum value of total 的 ID。我从DB类get_Max_ID()中的实例方法调用get_total_sales()
def get_Max_ID(self):
print("Max Sale ID here")
Cust.get_Total_Sales()
这显然会导致
TypeError: get_Total_Sales() 缺少 1 个必需的位置参数:'self'
如果我通过 get_Max_ID 传递 self。它会传递 DB 的 self 而不是 Cust。我不确定如何在从 DB 类调用 Cust 时传递它的 self。
澄清 - get_Total_Sales() 获取每个客户的总计,但我试图从所有客户实例中获取总计的最大值。 (我还没有写出最大总数的那部分代码)
【问题讨论】:
-
@PirateX 你试过我更新的答案了吗?您没有初始化
cust类,因此您的错误。 -
@CalebGoodman
Cust正在通过self.DB_cust[customerID]=Cust(data[0],data[1],data[2],float(data[3]))从DB内部调用 -
@PirateX 是的,因为您在该字典中有多个
Cust对象,所以问题仍然存在:哪些这些Cust的get_Total_Sales()你想要有吗? -
@uneven_mark 最大值。如果有 3 个客户总共有 5,10 和 15。我想要 15。
-
@PirateX 所以你真的想在字典中的每个
Cust上调用get_Total_Sales(),然后返回具有最高值的那个吗?
标签: python-3.x class self