【发布时间】:2016-09-24 00:55:20
【问题描述】:
所以我在 Python 中编写了一个程序,它将获取我所有的大学课程(来自 csv)并打印有关它们的信息。我写了一个简单的类Subject 来更好地管理一切。在我的大学里,有偶数周、奇数周和每周课程,我有讲座、练习和实验室。所以我的主题课是这样的:
class Subject:
number = 0
name = ""
dummyData = []
even = {}
odd = {}
all = {}
type = ""
def __init__(self, name, number, type):
self.name = name
self.number = number
self.type = type
self.info = str(number) + " " + name + " " + type
以前我整天都用even、odd 和all dicts 写,像这样:
even = {"mon":"",
"tue":"",
"wed":"",
"thu":"",
"fri":"",
}
所以我可以将所有课程时间添加到特定日期键。但是有一个问题。例如,假设编程讲座是主题 1,编程实验室是主题 2。主题 1 是星期一 9.15。主题 2 也是在星期一,但在 17.05。所以我有一个功能,可以检查主题是在偶数周还是奇数周还是每周。然后我会将 f.e 9.15 分配给主题 1 的 even["mon"]。然后我会选择主题 2,并尝试将 17.05 添加到 even["mon"]。每个主题都是存储在列表中的另一个主题类对象。但是有一个错误。当我尝试将 17.05 添加到主题 2s even["mon"] 时,它添加了它,好吧,但是 even["mon"] 应该是 ="17.05",但它是 ="9.15/17.05"。我试图找出问题所在,我终于做到了,通过改变我的课程:
class Subject:
number = 0
name = ""
dummyData = []
even = {"mon":"",
"tue":"",
"wed":"",
"thu":"",
"fri":"",
}
...etc...
type = ""
def __init__(self, name, number, type):
self.name = name
self.number = number
self.type = type
self.info = str(number) + " " + name + " " + type
到:
class Subject:
number = 0
name = ""
dummyData = []
even = {}
odd = {}
all = {}
type = ""
def __init__(self, name, number, type):
self.name = name
self.number = number
self.type = type
self.info = str(number) + " " + name + " " + type
self.even = {"mon":"",
"tue":"",
"wed":"",
"thu":"",
"fri":"",
}
+ 奇数。那么为什么 Python 喜欢记住写入第一个对象属性的内容呢?
【问题讨论】:
标签: python class initialization