【发布时间】:2015-10-02 12:46:51
【问题描述】:
我看过像Creating instances in a loop 这样的问题,但我每次都需要创建具有不同值的新实例,而不是一堆实例的克隆。
下面,我为 Bill 类的实例编写了一个餐厅小费计算器(含税)。我写了一个类方法,当第一个实例的计算完成时创建一个新实例。
虽然如果我打开 .py 文件以继续添加新实例并调用所需的所有类方法,这会有效,但如果我以某种方式创建了一个循环,当我键入“yes”时会创建一个新实例,这将更加有用"在第二类方法的self.choice中。
我之前创建循环的尝试导致创建了未命名的实例。 “退货单(示例,示例,示例)”不适合我,因为我无法调用它的方法(我可能可以,但它会让人头疼并且不会是 pythonic。)我也不能将其附加到列表中。
persons = []
class Bill:
def __init__(self, check, tax, tip):
self.check = check
self.tax = tax
self.tip = tip
def addPersons(self):
self.choice = input("Do you want to calculate for another person?")
if self.choice == "Yes" or self.choice == "yes":
person2 = Bill(float(input("Check: ")), float(input("Tax: ")), float(input("Tip: ")))
return person2
else:
pass
def percent(self):
self.tax = self.tax/100
self.tip = self.tip/100
def calculate(self):
self.result_1 = self.check + (self.check * self.tax)
self.result_final = self.result_1 + (self.result_1 * self.tip)
self.difference = self.result_final - self.result_1
self.advice = self.result_1, "is your check with tax added.", self.difference, "is how much tip you need to pay.", self.result_final, "is your total."
return self.advice
a = Bill(float(input("Check: ")), float(input("Tax: ")), float(input("Tip: ")))
a.percent()
a.calculate()
print(a.advice)
persons.append(a)
b = a.addPersons()
b.percent()
b.calculate()
print(b.advice)
persons.append(b)
c = b.addPersons()
c.percent()
c.calculate()
print(c.advice)
persons.append(c)
感谢您的宝贵时间和帮助。 :)
【问题讨论】:
-
我不清楚您要完成什么以排除循环。您能否更具体地说明您想要做什么以及您对循环的尝试做了什么?
-
当然。 (我不排除循环,我想要一个循环。我只是想解释我自己的循环是如何失败的。)由于我需要动态数量的实例(与不同数量的朋友一起出去),我想“虽然每次前一个实例完成计算时,self.choice == 'yes'" 循环都会创建一个新实例。我只是没有足够的知识来制作一个工作循环。
标签: python oop loops python-3.x