我试图学习如何使用python类来使我的代码更优雅。我编写的代码可行,但我不明白为什么类有用。我觉得我错误地使用了课程。我创建了一个类对象,里面有三个方法(create
,remove
和update
)。我的班级叫Task
。我想使用类来调用我的函数,比如我们如何使用模块。
到目前为止,这是我的代码:
class Task(object):
def __init__(self):
return None
def create(self):
client.hr.post_job(owner,title,rate,description,private_or_not,category,sub_category,budget, skills = ['data-mining','data-scraping','google-docs','google-spreadsheet','internet-research','spreadsheets'])
print "Job successfully created!"
def remove(self):
client.hr.remove_job(job_key)
def update(self):
client.hr.update_job(job_key)
main = Task()
main.list_jobs()
答案 0 :(得分:2)
您的问题的答案相对简单:您没有在班级Task
中保留任何“状态”。 Task
中的每个方法都在“功能”范例中运行:即,它所操作的所有数据都直接传递给函数。在面向对象的方法中,一些数据将由类本身保存。
如果您在__init__
中设置数据,或者在方法调用之间保留数据,那么使用类来构建代码库会更有意义。
使用类有一些明显的用例:例如,在使用数据库时,“数据库对象关系映射对象”通常会“记住”数据库。这样,您可以更新数据库中的信息,而无需将数据库传递给每次执行信息更新的函数。当然,这只是您可以有效使用班级数据的众多方法之一。
例如,假设我想要一名员工:
class Employee:
def __init__(self, name: str, years_of_employment: int):
self.name = name
self.years_of_employment = years_of_employment
def to_string(self) -> str:
return "{} has worked here {} years".format(self.name, self.years_of_employment)
然后,后来:
e = Employee("Bob", 2)
print(e.to_string()) //to_string remembers the name and years of employment
如果这些概念是新概念,请阅读Object Oriented Programming。 “对象”是对象“类”的特定实例化,旨在保持“状态”并描述“行为”。因此,在上面的示例中,e
是类Employee
的特定实例。对象e
包含描述对象name
的{{1}}和years_of_employment
的“状态”。可以轻松传递e
,并且可以直接调用依赖于e
的“状态”的行为:在这种情况下,e
方法会在需要获取字符串时描述行为通过返回包含状态值to_string
。
e