子包中模块的Python命名约定

时间:2020-02-04 12:46:47

标签: python coding-style pep8

我正在创建一个python软件包,该软件包将由大约一个小型最终用户组使用。 20个人甚至由3人组成的开发人员小组也将对此软件包做出贡献。

我的程序包包含多个子程序包。我不希望最终用户从子程序包访问任何实用程序功能。如何命名这些子包中的子包和模块?

  • 在子包中的模块名称是否带有下划线?例如_mymodule.py
  • 以下划线开始子程序包名称吗?例如_mypackage
  • 都是吗?

我的目的是与最终用户交流,这些子软件包不是为他们设计的。但是,这些功能可能是其他子包中的实用程序功能所必需的,因此并不是真正的“私有”。

1 个答案:

答案 0 :(得分:-2)

类中的方法应使用前缀__(双下划线)声明。当方法以__为前缀时,它们被视为私有。请检查以下代码,

基类:

import React, { Component, createContext } from 'react';
import { API } from '../Services'

export const ProjectContext = createContext();

export class ProjectContextProvider extends Component {
    constructor(props) {
        super(props);

        this.refresh = this.refresh.bind(this);

        this.state = {
            project: null,
            refreshProject: this.refresh
        }
    }

// This is what I have
    refresh(projectID) {
        API.getProject(projectID).then(project => {
            this.setState({ project });
        });
    }

// This is what I want
//    refresh() {
//        API.getProject(this.projectID).then(project => {
//            this.setState({ project });
//        });
//    }

    render() {
        return (
            <ProjectContext.Provider value={{...this.state}}>
                {this.props.children}
            </ProjectContext.Provider>
        );
    }
}

在此类中,以下对象无法访问__fun方法, obj1 = Base() obj1 .__ fun()

行obj1 .__ fun()将引发AttributeError。