Во-первых, вы не используете имя класса для объявления переменных в его методах: у вас есть self
для этого (которое вы можете переименовать в любое, что вам нравится, но «я» - это соглашение)
во-вторых, вы должны инициализировать ваш объект класса в главной функции, иначе Python не будет знать, что делать с методами, которые вы вызываете (когда вы определяете метод в классе, первый аргумент self
обозначает объект класса,поэтому каждый раз, когда вы инициализируете объект и затем вызываете метод для этого, аргумент, который вы передаете в скобках, фактически является вторым аргументом, первый из которых является самим объектом)
третий: это больше стиль, но вы на самом деле не используете CamelCase в python, за исключением имен классов, все остальное в snake_case
четвертый: +=
более читабелен и быстрее, чем example = example + 1
class CashRegister(object) :
def __init__(self) :
self.total_price = 0
self.item_count = 0
def add_item(self, price) :
self.total_price += int(price)
self.item_count += 1
def get_total(self) :
return self.total_price
def get_count(self) :
return self.item_count
def main() :
register = CashRegister()
selection = True
while selection :
selection = input("Would you like to add another item to the cart Y or N\n\t").upper()
if selection == "Y" :
price = input("What is the price of the item?\n\t")
register.add_item(price)
else :
print(register.get_total())
print(register.get_count())
print(selection)
selection = False
main()
это то, как я, вероятно, сделал бы это, я убрал декораторы @property
, потому что я не знаю, действительно ли вам они там нужны, вы можете просто позвонить вods с квадратными скобками ()
в конце, чтобы получить то, что вы хотите
Затем, если вы действительно хотите использовать это, вам нужно сделать еще кучу вещей, и это будет ловушка для исключения, определить, как деньгирегистр ведет себя, если отрицательное значение передается как price
, и так далее ... удачи и наслаждайтесь Python