`
chelsea
  • 浏览: 117908 次
  • 来自: ...
社区版块
存档分类
最新评论

Python:缺失的访问控制?

 
阅读更多

不知为何Python没有提供像C++和Java那样的访问控制,无法控制在module中定义的function和class的可见性;class中定义的function和variable倒是可以通过不少于两个下划线的前缀和不多于一个下划线的后缀标明这是class“私有”的.

在Python中文邮件列表问了一下,感觉至少有三种workaround:

1, 对于class中打算私有的函数定义以两个下划线开头

class SomeClass:
def pub_func(self):
self.__private_func()

def __private_func(self):
print 'impl'

SomeClass().pub_func()

SomeClass().__private_func() #AttributeError: SomeClass instance has no attribute '__private_func'

2,对于module中打算私有的function或class,定义到单独的module中,在package的__init__.py中定义__all__,使其不包括这个单独的module

并且不能在其它module的全局空间中import这个单独的module;例如,包结构:

util/__init__.py

/private.py

/pub.py

in util/__init__.py:

__all__=["pub"]

in util/private.py

def private_func():
print 'private'

in util/pub.py

def pub_func():

import private

private.private_func()

客户代码:

from util import *

pub.pub_func() #ok
private.private_func() #NameError: name 'private' is not defined

但如果客户from util import private 还是可以使用private module的

3, 将打算私有的代码以可交互语言编写扩展,并以二进制提供

以上方法都不尽如人意,基本上,问题是在Python中有没有访问控制的必要?什么情况下会有?如果有必要的话应该怎么控制呢?

我不知道

See also: 访问控制 : 语言和平台

分享到:
评论

相关推荐

    千锋python最新高级教程:数据处理和分析

    - 支持缺失值处理,如填充缺失值、删除缺失值等。 - **DataFrame**: - DataFrame 是二维的数据结构,类似于表格,每一列可以是不同的数据类型。 - 可以通过行索引和列索引来访问元素,支持灵活的数据筛选和过滤...

    data-analytics-python:Gits类数据分析

    用户在下载这个压缩包后,可以通过解压并导航到"data-analytics-python-main"目录来访问所有内容。 项目可能涵盖了以下主题: 1. Python基础:包括数据类型、控制流、函数和模块的使用。 2. 数据操作:利用Pandas...

    python基础案例教程课后答案-案例驱动式Python基础与应用答案.pdf

    【Python基础知识】 ...通过这些基础知识的学习,你可以掌握Python的基本操作,包括数据处理、文件操作、逻辑控制、图形界面开发以及文本分析等。对于初学者来说,这些都是构建Python程序的重要基石。

    Python经典面试题

    - 控制流:如条件语句(if...else)、循环(for、while)以及异常处理(try...except)。 - 函数:定义函数、参数传递、局部和全局变量。 - 模块和包:导入、使用和创建自定义模块。 2. **面向对象**: - 类与...

    不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据 (2).docx

    - **基础阶段**:首先需要掌握Python的基础语法,包括变量、数据类型、控制结构(循环、条件语句)、函数等。这部分知识可以通过在线教程、官方文档或书籍学习。 - **核心技能**:学会使用`requests`库发送HTTP...

    python核心笔记_python核心笔记_python_

    - **封装**:通过访问修饰符(public、private)控制对象的属性和方法的可见性,保护数据的安全。 6. **Python在数据分析中的应用** - **数据清洗**:使用pandas库进行数据预处理,包括缺失值处理、异常值检测、...

    Covid_Tracker_Using_Python:Covid实时传播率

    pandas库是Python中的数据处理神器,它提供了一系列方便的数据操作函数,如read_csv用于读取CSV文件,dropna用于去除缺失值,groupby用于按地区分组统计等。 三、数据分析 分析数据可以帮助我们了解疫情的发展趋势...

    Python爬虫数据可视化分析大作业.zip

    Python爬虫数据可视化分析大作业是一个综合性的项目,旨在教授如何使用Python进行网络爬虫、数据处理和数据可视化。在这个项目中,我们将关注以下几个关键知识点: 1. **Python爬虫**:Python是一种广泛用于Web抓取...

    sqlmap+python2.7.1

    6. **使用Python2.7.1的注意事项**:由于Python2已经在2020年停止支持,使用2.7.1可能面临安全更新缺失的风险。对于新的项目,建议使用Python3,并考虑升级依赖Python2的工具。 7. **安装与配置**:解压这个压缩包...

    python语言 实现数据仓库开发

    - **数据清洗**:Python的`pandas`库提供了大量数据清洗功能,如`dropna()`去除缺失值,`fillna()`填充缺失值,`replace()`替换特定值,`isnull()`和`notnull()`检查空值等。 - **数据类型转换**:`astype()`函数...

    Python爬虫入门到精通

    - 缺失值处理:填充或删除缺失数据的方法介绍。 - 异常值检测:通过统计学方法识别并处理异常数据。 - 数据可视化:利用Matplotlib、Seaborn等库将数据分析结果图表化展示。 - **性能优化与错误排查**:提升爬虫...

    python面试题

    ### Python面试题详解 #### 1. Python的函数参数传递 在Python中,函数参数的传递遵循“传值”而非“传引用”的原则。当传递不可变数据类型(如整数、字符串等)时,实际上是将该数据类型的值复制一份传递给函数;...

    Python基于Spark的电影推荐系统.zip

    3. **Django**:Django是一个强大的Python Web框架,遵循模型-视图-控制器(MVC)架构模式。在这里,Django用于搭建系统的前端界面和后台服务器。通过定义模型来管理数据库,创建视图处理HTTP请求,设计模板呈现用户...

    Python大数据处理与分析PPT.zip

    1. **Python基础**:了解Python的基本语法,包括变量、数据类型(如列表、元组、字典和集合)、控制流(如if-else、for、while循环)以及函数定义和调用,是进一步学习Python大数据处理的前提。 2. **Numpy**:...

    基于Pythonweb的豆瓣电影数据分析及可视化系统

    1. **Python基础**:作为主要的编程语言,Python的基础语法、数据结构(如列表、字典)和控制流(如循环、条件语句)是必不可少的。 2. **数据分析库的使用**: - **Pandas**:用于数据处理和分析,包括数据清洗、...

    py转exe依赖的python库

    在Python编程领域,将Python脚本转换为可执行文件(.exe)是常见的需求,这样无需安装Python环境,用户也能在Windows系统上运行程序。这个过程通常涉及到一个名为`py2exe`或`pyInstaller`的第三方库。下面将详细讨论...

    python-2.7.12.amd64.exe

    `python-2.7.12.amd64.msi`是一个Windows Installer包,可能是Python安装的另一种形式,适用于需要更精细控制安装过程的情况。 总的来说,安装Python 2.7.12需要注意兼容性、路径选择、环境变量配置以及解决可能...

Global site tag (gtag.js) - Google Analytics