所以我用Python编写了一个程序,它将接受我所有的大学课程(来自csv)并打印有关它们的信息。我写了一个简单的课程Subject
来更好地管理一切。在我的大学里,有几周,几周和每周课程的课程,我有讲座,练习和实验室。所以我的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
来写了所有的日子,就像这样:
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"]
。每个主题都是存储在列表中的其他Subject类对象。但是有一个错误。当我尝试将17.05添加到主题2 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会记住什么是写入第一个对象属性?
答案 0 :(得分:0)
您需要在__init__
方法中声明属性。这是一个例子
class Subject:
def __init__(self, name, number, type):
self.number = number
self.name = name
self.dummyData = []
self.even = {}
self.odd = {}
self.all = {}
self.type = type
声明类声明中的变量使它们成为“类”成员而不是实例成员。在__init__
方法中声明它们可确保每次创建对象的新实例时都会创建成员的新实例。