据我所知,当我定义一个类时,我需要包含self和 init ,但有人可以帮助我如何定义一个具有默认值的类吗?
例如:
class Student1():
def __init__(self, college='University', gpa=3.2, credits=45):
...
class Student2():
def __init__(self, college='Community College', gpa=3.8, credits=51):
...
我希望能够让Student1.college拥有'大学',Student2.college的全球价值,以获得社区学院',Student2.gpa的全球价值。使全局值3.8和Student1.gpa的全局值为3.2,这样当我稍后在代码中使用它们时,它们就会得到我给它们的值。
提前致谢!
EDIT ::
class Student():
def __init__(self, college, gpa, credits)
self.college=college
self.gpa=gpa
self.credits=credits
Student1=Student("university", 3.2, 45)
Student2=Student("community college", 3.8, 51)
def work(self, job='work study')
self.job=job
因此,当我在Python Shell中键入Student1.college时,它将返回" university"。
我希望学生1和学生2都有"工作"工作学习但是当我在Shell中键入self.job时,它会说"名称:错误名称" self"没有定义"为什么?
答案 0 :(得分:1)
您的代码存在一些小问题。首先,您需要在创建student1
和student2
之前完成对课程的定义。在python中,当你去缩进时,你告诉解释器你已经到达了一个块的末尾(即一个函数,一个类,一个循环或一些其他代码块)。如果您希望work
成为您的类的方法,则它必须是Student
的类块的一部分。
其次,您只需在job
中设置work
属性,但从不致电work
。在init
中将每个属性设置为某个默认值通常是一个好主意,但不是必需的。
第三,似乎你错过了一些:
并且至少有一个缩进错误。尝试这样的事情:
class Student():
def __init__(self, college, gpa, credits):
self.college = college
self.gpa = gpa
self.credits = credits
self.job = "no job"
def setWork(self, job='work study'):
self.job = job
student1 = Student("university", 3.2, 45)
student1.setWork()
student2 = Student("community college", 3.8, 51)
student2.setWork("Starbucks")
print student1.job
# work study
print student2.job
# Starbucks