Python输入作业代码

Python输入作业代码,python,class,input,function,Python,Class,Input,Function,我的代码似乎不起作用,我正在尝试获取工作、类别和薪水的输入,并存储输入 class Jobs: def GetJob(self): name = raw_input('Enter a Job Title: ') category = raw_input('Enter what Category that Job is: ') salary = raw_input('Enter the salary of that Job: ')

我的代码似乎不起作用,我正在尝试获取工作、类别和薪水的输入,并存储输入

class Jobs:

    def GetJob(self):
        name = raw_input('Enter a Job Title: ')
        category = raw_input('Enter what Category that Job is: ')
        salary = raw_input('Enter the salary of that Job: ')
        print name,category, salary

    def __init__(self,name,category,salary):
        self.name = Jobs.GetJob(name)
        self.category = Jobs.GetJob(category)
        self.salary = Jobs.GetJob(salary)


GetJob = Jobs()

print GetJob

您的代码完全脱离了良好的OOP实践,第一部分也是Edersson的答案

类具有for角色来存储值、获取/设置值并将转换返回(或应用)到其封装的值。您试图实现的完全是胡说八道:您在另一个方法中调用Jobs类的
GetJob
方法。如果您写下以下内容,它可能会起作用:

def __init__(self,name…):
    self.name = Jobs.GetJob(self, name)
    …
但这将是一种错误的程序设计方法。您最好坚持让您的类保存您的值并使其在这方面做得很好,并创建另一个函数来帮助填充您的类:

class Jobs:   
    def __init__(self, name, category, salary):
        self.name = name
        self.category = category
        self.salary = salary

    def __repr__(self):
        return "Jobs<%s,%s,%s>" % (self.name, self.category, self.salary)

def GetJob():
    name = raw_input('Enter a Job Title: ')
    category = raw_input('Enter what Category that Job is: ')
    salary = raw_input('Enter the salary of that Job: ')
    return Jobs(name, category, salary)

print GetJob()
类作业:
定义初始(自我、姓名、类别、薪资):
self.name=名称
self.category=类别
薪水
定义报告(自我):
返回“职务”%(self.name、self.category、self.salary)
def GetJob():
名称=原始输入('输入职务:')
类别=原始输入('输入作业的类别:')
工资=原始输入('输入该工作的工资:')
返回工作(姓名、类别、工资)
打印GetJob()
我不同意eandersson的方法,因为它通过直接调用GetJob方法来欺骗构造函数的目的。那么GetJob就没用了。人们希望能够使用作业类,而不必在施工时总是有原始输入。编辑:仅作为对其答案第一部分的评论有效

最后,我认为你对编程有很多误解。您最好彻底阅读python课程,就像上面的课程一样,因为要编写类似的东西,确实有很多概念是您忽略的

去看看:


+1因为你的答案实现了一个非常简单的MVC范例。哈哈,我只是修改了他的代码来帮助他开始,我很高兴你在帖子中两次提到我。。。顺便说一句,从调用GetJob函数中删除self。我真正想关注的是面向对象编程的封装概念。当然,这是MVC固有的特性,但考虑到问题中的代码,我可以告诉你,他还远远不了解MVC。啊哈,好吧,format()有一个要点,另一个是
\uuuuu repr\uuuuuuu
上的
\uuuu str\uuuuuuu
,最后一个是发现被遗忘的
自我的
:-),但我相信真正重要的是Chris学习编程,甚至是OOP!也就是说,您使用
Job
而不是
Jobs
是正确的,它更像是面向对象的(因为它只定义了一个作业)。虽然我们可以讨论
GetJob
而不是
CreateJob
,但我认为
PopulateJob
会更准确:-pWell,我实际上开始教他课程、方法等……但后来我发现他真正需要的是从一开始就循序渐进的课程。看看他的代码,他实际上并不理解自己在写什么。看起来您正在使用“Python2.x”-因此建议使用
类作业(对象):