从另一个只包含自己的另一个调用 class 的实例方法
Calling instance method of class from another another containing only self
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 class get_Max_ID()
中的实例方法调用 get_total_sales()
def get_Max_ID(self):
print("Max Sale ID here")
Cust.get_Total_Sales()
这显然会导致
TypeError: get_Total_Sales() missing 1 required positional argument: 'self'
如果我通过self
通过get_Max_ID。它会传递 DB 的自身而不是 Cust。我不确定如何在从 DB class.
调用时传递 Cust 的自身
澄清 - get_Total_Sales() 获取每个客户的总计,但我试图从所有客户实例中获取总计的最大值。 (我没有写出最大总数的那部分代码)
按照 OP 在问题评论中说他们想做的事情,他们可能想要这样的东西:
max([cust.get_Total_Sales() for id, cust in self.DB_cust.items()])
它将遍历客户字典,并且对于每对 key/value 对(id
和 cust
)将调用 return Cust
的get_Total_Sales()
.
然后 max
将从生成的值列表中获取所有单个结果,并且 return 仅获取最大值。
正如评论中所问,虽然我认为没有理由不使用理解:
results = []
for id, cust in self.DB_cust.items():
results.append(cust.get_Total_Sales())
return max(results)
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 class get_Max_ID()
get_total_sales()
def get_Max_ID(self):
print("Max Sale ID here")
Cust.get_Total_Sales()
这显然会导致
TypeError: get_Total_Sales() missing 1 required positional argument: 'self'
如果我通过self
通过get_Max_ID。它会传递 DB 的自身而不是 Cust。我不确定如何在从 DB class.
澄清 - get_Total_Sales() 获取每个客户的总计,但我试图从所有客户实例中获取总计的最大值。 (我没有写出最大总数的那部分代码)
按照 OP 在问题评论中说他们想做的事情,他们可能想要这样的东西:
max([cust.get_Total_Sales() for id, cust in self.DB_cust.items()])
它将遍历客户字典,并且对于每对 key/value 对(id
和 cust
)将调用 return Cust
的get_Total_Sales()
.
然后 max
将从生成的值列表中获取所有单个结果,并且 return 仅获取最大值。
正如评论中所问,虽然我认为没有理由不使用理解:
results = []
for id, cust in self.DB_cust.items():
results.append(cust.get_Total_Sales())
return max(results)