Python OO,自调用类中的其他函数?
问题描述:
我是面向对象的概念的新手,我尝试使用面向对象技术来解决这个问题。我已经用普通的编程技术解决了这个问题,但是我不能用OO技术来解决它。Python OO,自调用类中的其他函数?
我已经试过什么: 起初,我只叫student1.print()。那没有工作,所以我叫parseDate()和calculateFine()。 我把自己放在我的学生课的所有变量中,因为我没有真正理解自我为什么或如何自我工作。
道歉,如果我错误地标记标题,但我不知道还有什么要写,因为我不确定我的代码中究竟是什么问题。
class getFine():
def __init__ (self,expectedDate,actualDate):
self.expectedDate = expectedDate
self.actualDate = actualDate
def parseDates(self):
self.ya = self.actualDate[0]
self.ma = self.actualDate[1]
self.da = self.actualDate[0]
self.ye = self.expectedDate[0]
self.me = self.expectedDate[1]
self.de = self.expectedDate[2]
def calculateFine(self):
self.fine = 0
if(self.ya>self.ye):
self.fine = 10000
elif self.ya==self.ye:
if(self.ma>self.me):
self.fine = 500 * (self.ma-self.me)
elif(self.ma==self.me) and (self.da>self.de):
self.fine = 15 * (self.da-self.de)
def print(self):
print(self.fine)
def main():
expectedDate = str(input().split(" "))
actualDate = str(input().split(" "))
student1 = getFine(expectedDate, actualDate)
student1.parseDates()
student1.calculateFine()
student1.print()
if __name__ == "__main__":
main()
答
你的日期是字符串,你再要互相减去。首先使用这样的东西将它们转换为整数或浮点数:
expectedDate = [int(i) for i in (input().split(" "))]
actualDate = [int(i) for i in (input().split(" "))]
这是否解决了您的问题?
如果你只想调用getFine.print()
功能,而不是其他funtions,你可以调用的方法getFine.print()
这些类的方法。因为你很可能要一年的月份和日期分开上的每个函数调用,你可以那部分转移到init方法
class getFine():
def __init__ (self,expectedDate,actualDate):
self.expectedDate = expectedDate
self.actualDate = actualDate
self.ya = self.actualDate[0]
self.ma = self.actualDate[1]
self.da = self.actualDate[2] # typo here 0 --> 2
self.ye = self.expectedDate[0]
self.me = self.expectedDate[1]
self.de = self.expectedDate[2]
def calculateFine(self):
self.fine = 0
if(self.ya>self.ye):
self.fine = 10000
elif self.ya==self.ye:
if(self.ma>self.me):
self.fine = 500 * (self.ma-self.me)
elif(self.ma==self.me) and (self.da>self.de):
self.fine = 15 * (self.da-self.de)
def print(self):
self.calculateFine()
print(self.fine)
expectedDate = [int(i) for i in (input().split(" "))]
actualDate = [int(i) for i in (input().split(" "))]
student1 = getFine(expectedDate, actualDate)
student1.print()
谢谢你这么多的时间和帮助,它的工作,我学到新的东西小时后头部划伤:) – Kush