Python命名约定

时间:2013-10-09 06:00:54

标签: python flask flask-restful

我正在使用Flask-Restful在我的python应用程序中实现REST api。我有一个模型模块,一个业务模块和一个控制器模块。这是我在login_controller.py文件中定义的控制器之一

from flask.ext.restful import Resource,request,reqparse
from app.business.login import Login
from app.models.models import User, Address

class Login_Controller(Resource):

    def __init__(self):
        pass
    def get(self):
        loginBO=Login()
        obj=loginBO.getAllUsers()
        return {"users":obj}, 201
    def post(self):
       pass
    def delete(self):
        loginBO=Login()
        status =loginBO.deleteUser(request.json)
        if status:
            return {"status":"true"},201
        else:
            return {"status":"false"},401
    def put(self):
        loginBO=Login()
        status =loginBO.addUser(request.json)
        if status:
            return {"status":"true"},201
        else:
            return {"status":"false"},401

现在我对将上述文件命名为 控制器 并不满意?什么是“PYTHONIC”方式

  1. 命名文件
  2. 为班级命名。
  3. 我看到有些人将这些类命名为视图。这似乎很好,如果我路由到模板,但我服务普通老json?你们说什么?

2 个答案:

答案 0 :(得分:2)

Python标准命名约定显示在PEP 8中。您询问了文件名和类名。 package and module names的约定(通常是您的文件名):

  

模块应该有简短的全小写名称。下划线可以   如果它提高了可读性,则在模块名称中使用。 Python包   也应该有简短的全小写名称,尽管使用   不鼓励下划线。

     

由于模块名称映射到文件名,而某些文件系统是   不区分大小写和截断长名称,重要的是模块   名称选择相当短 - 这在Unix上不会成为问题,   但是当代码被传输到较旧的Mac或时,它可能是一个问题   Windows版本,或DOS。

     

当用C或C ++编写的扩展模块附带时   提供更高级别的Python模块(例如,更面向对象)   接口,C / C ++模块有一个前导下划线(例如_socket)。

对于class names

  

几乎无一例外,类名使用CapWords约定。   内部使用的类别还有一个主要的下划线。

就是这样。您是否将其称为“控制器”或“视图”或“资源”,或者即使您在名称中甚至包含“控制器”或“视图”等内容也没有约定。这里没有正式的“python约定”,特别是考虑到Web应用程序只是Python可以做的一小部分。只要您的项目中的其他开发人员理解“控制器”与“视图”的含义,您应该没问题。不要过度思考这个问题,也不要指望别人能够找到正确的答案。这只是我们作为开发人员的负担:)。

但是,如果您将其称为LoginController,请确保它是LoginController,而不是Login_Controller

答案 1 :(得分:0)

您可以按照PEP 8(http://www.python.org/dev/peps/pep-0008/#package-and-module-names),更多 pythonic 方式。您也可以使用Google Style Guide,我认为很好。

在这种特殊情况下,我会为所有控制器使用一个名为 controller 的文件,我的类名为Login。但是,如果你真的喜欢login.py作为你的模块,那么我认为最好用Controller命名你的控制器。