2013-05-05 49 views
0

我的代码似乎没有工作,我试图找到一份工作,类别的输入和薪水,并存储输入Python的输入职位代码

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 
+0

看来你使用 “的Python 2.x的” - 这样会推荐使用'类作业(对象):' – 2013-05-05 15:20:33

回答

2

你的代码是完全出来的良好的面向对象操作,以及第一部分eandersson的回答也...

一个类具有存储值,获取/设置它们并将其转换为封装值的角色。你试图达到的是完全无稽之谈:你在另一种方法中调用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() 

因为它欺骗的目的我不eandersson的做法一致构造函数,通过直接调用GetJob方法。然后GetJob没有用。而且人们会希望能够使用Job类,而不必在施工时输入原始输入。编辑:只有在他的答案的第一部分评论。

最后,我认为你对编程有很多误解。你应该更好地阅读一个像http://wiki.python.org/moin/BeginnersGuide/NonProgrammers这样的python课程,因为实际上有很多概念你会忽略它来写这样的东西。

去看看:

+0

+1因为你的答案实现了一个非常简单le MVC范式。 – GorillaPatch 2013-05-05 15:19:32

+0

lol我简单地修复了他的代码以帮助他开始,爱你以某种方式设法在帖子中命名两次......并且btw从调用的GetJob函数中删除自己。 – eandersson 2013-05-05 15:25:35

+0

我真正想要关注的是面向对象编程的* ENCAPSULATION *概念。这当然是MVC固有的,但考虑到问题中的代码,我可以告诉你,他远不了解MVC。 – zmo 2013-05-05 15:27:17