2017-10-12 102 views
0
class UniversityAthletics(): 
    def __init__(self, university_name, sport): 
     self.name = university_name 
     self.sport = sport 
     self.tickets_sold = 10 

    def tickets_sold(self): 
     """This just tells you how many tickets have been sold""" 
     print(str(self.tickets_sold) + " tickets have been sold") 

    def describe_athletics(self): 
     print(self.name.title() + " " + self.sport.title()) 

    def in_season(self): 
     print(self.sport.title() + " is in season.") 

    def set_tickets_sold(self, numticket): 
     """This sets the number of tickets that have been sold""" 
     self.tickets_sold = numticket 

    def increment_tickets_sold(self, moretickets): 
     """This increments the number of tickets sold""" 
     self.tickets_sold += moretickets 

athletics = UniversityAthletics('salisbury university', 'soccer') 
athletics.set_tickets_sold(20) 
athletics.tickets_sold() 
athletics.increment_tickets_sold(500) 
athletics.tickets_sold() 

我试图让那台改变门票“increment_tickets_sold”,但数量已售出“set_tickets_sold”门票的数量,那么属性的属性,当我尝试设置数量的票,然后调用方法'tickets_sold()'我不断收到错误。修改属性的值通过方法

Traceback (most recent call last): File "E:/WorWic/IntroToProgramming/chapter9/University Athletics part 2.py", line 29, in athletics.tickets_sold() TypeError: 'int' object is not callable

我做错了什么?

+0

您正在用'tickets_sold'变量覆盖'ticks_sold()'方法。改变他们的名字。例如,将变量更改为'_tickets_sold' – GWW

+0

您在同一个对象上使用了'tickets_sold'名称作为两个不同的事物。不要这样做。 – user2357112

回答

1

您的问题是,tickets_sold既是属性又是函数名称。它获取属性并调用它,而不是函数。我建议将你的函数重命名为别的东西。

+0

谢谢,我甚至没有意识到这一点 – CholoBoy