使用默认值定义类

时间:2015-11-04 19:05:56

标签: python class global-variables

据我所知,当我定义一个类时,我需要包含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"没有定义"为什么?

1 个答案:

答案 0 :(得分:1)

您的代码存在一些小问题。首先,您需要在创建student1student2之前完成对课程的定义。在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