`
rockkyle
  • 浏览: 10767 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

python 下划线使用总结

阅读更多

之前看python的类库,对于下对象带下划线的问题,不是很理解,最近专门抽时间看了下资料,总结下

一、对象前带一个下划线,如_example。

官方文档的解释是不能通过 ’from modules import *‘ 导入对象,若要在模块外引用,需按’from modules import  _name' 导入所需的对象

#/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
import os
if os.getcwd() not in sys.path:
        sys.path.append(os.getcwd())
HOME='/root'
os='ubuntu'
_pyversion=sys.version
def _printvalue():
        print HOME,os,_pyversion
class _A:
        def printvalue():
                print "hello world!"

测试代码:

from underlinetest import *
#variable
try:
        print _pyversion
except NameError,e:
        print e
#function
try:
        _printvalue()
except NameError,e:
        print e
#class 
try:
        a=_A()
except NameError,e:
        print e

 测试结果:

name '_pyversion' is not defined
name '_printvalue' is not defined
name '_A' is not defined

 再换一种方式测试,测试代码如下:

from underlinetest import _pyversion,_printvalue,_A
try:
        print _pyversion
        _printvalue()
        a=_A()
except NameError,e:
        print e

 测试结果:

2.7.4 (default, Apr 19 2013, 18:28:01) 
[GCC 4.7.3]
/root ubuntu 2.7.4 (default, Apr 19 2013, 18:28:01) 
[GCC 4.7.3]

二、对象后一个下划线,如example_

官网解释是作为与python内置对象名区别的一个方法

>>> type(int)
<type 'type'>
>>> int=1
>>> type(int)
<type 'int'>
>>> 

 上面的代码看起来很矛盾,int作为一个类型对象,但是我们给名为int的赋值,此时int不在为类型对象,而变为整形对象,这会是代码看起来很混乱

>>> int_=1

 为了区别,在其后面加一条下滑线。

 

三、对象前面双下滑线,如__example:

1.会出现和(一)中同样的效果,可以理解为对象为’_'+'_example'组成

2.声明对象为私有

测试代码:

#/usr/bin/env python
#-*- coding:utf-8 -*-
class A:
        __name="kyle"
        def __getname(self):
                return self.__name

class B(A):
        pass

b=B()
try:
        print b.__name
except AttributeError,e:
        print e
finally:
        print b._A__name

try:
        print b.__getname()
except AttributeError,e:
        print e
finally:
        print b._A__getname()

 测试结果:

B instance has no attribute '__name'
kyle
B instance has no attribute '__getname'
kyle

 可以看出子类不能直接访问基类带‘__’的属性和方法,要访问的话需在方法和属性前加‘_classname’

 

四、前后都带双下滑线的,如__example__

这是python的魔法方法,比如__init__,这里暂不做总结说明

 

 

 

 

 

分享到:
评论

相关推荐

    python知识点总结.pdf

    Python 知识点总结 Python 语言概述 * Python 是一种面向对象的语言,具有面向对象、面向过程的特点。 * ASCII 码是一种字符编码标准,使用一个字节表示一个字符,而 Unicode 编码通常用两个字节表示一个字符。 ...

    python基础教程总结整理

    ### Python基础教程总结整理 #### 一、基础知识 在学习Python之前,首先了解一些基本概念是非常重要的。 **1. 除法操作** - **未来除法**: 在Python 2.x版本中,为了确保除法操作的行为与Python 3.x一致(即...

    Python中的单下划线和双下划线使用场景详解

    总结来说,Python中单下划线和双下划线的使用场景都是为了提供更清晰的代码结构和避免潜在的命名冲突。合理运用这些约定可以使得Python代码更加规范和易于理解。需要注意的是,无论是单下划线还是双下划线的命名约定...

    PYTHON期末总结.pdf

    ### PYTHON期末总结知识点详解 #### 一、基础语法 ##### 1. 基础语法 - **单行注释**: 在Python中,单行注释以`#`符号开始,例如:`# 这是一个单行注释`。 - **多行注释**: Python中没有内置的多行注释语法,但是...

    Python中各种下划线使用总结和实例详解

    总结,Python中的下划线用法主要涉及代码的可读性和命名约定,不同的下划线组合有不同的语义。虽然大部分情况下是程序员的约定,但如`__var`这样的形式会导致名称修饰,影响了子类继承的行为。理解这些规则对于编写...

    Python基本语法总结.docx

    列表是Python中使用最频繁的数据类型,支持字符、数字、字符串和列表嵌套。列表用[]标识,支持索引和切割操作,切割可以用到变量 [头下标:尾下标]。 元组 元组是另一个数据类型,类似于列表,但不能二次赋值。元组...

    Python中单、双下划线的区别总结

    3. **PEP 8**:Python的编码规范PEP 8建议使用单下划线来表示非公开的成员,但不强制。对于双下划线方法,PEP 8提醒开发者,除非有特殊理由,否则应避免使用双下划线开头,因为这可能导致意外的行为和混淆。 4. **...

    python学习笔记 Python学习知识总结 Python编程开发总结 共10页.pdf

    本篇笔记总结了 Python 编程语言的基础知识点,涵盖了 print 函数的用法、注释、字符串、变量命名规则、控制语句、随机数、字符串链接、print 函数的换行、for 循环等多个方面的知识点。 一、print 函数的用法 ...

    python基础 个人总结

    2. **使用IDLE(Python自带的集成开发环境):** - 运行IDLE可以通过在运行中输入`idle`来启动。 - IDLE提供了简单的编辑窗口,可以用来编写和调试代码。 - 可以直接运行或通过点击运行按钮来执行代码。 3. **...

    python编程规范.pdf

    Python 编程规范建议使用 Pythonic 风格编写代码,即遵守 Python 的语法和惯例,避免使用其他语言的风格。同时,代码应该简洁、易读、易维护和易重用。 二、缩进方式 缩进方式是 Python 代码中非常重要的一方面。...

    python基础语法总结(超详细).pdf

    下面是对Python基础语法的详细总结: 1. **环境搭建**:Python的安装通常通过官网下载相应版本的安装包,按照提示进行安装。安装完成后,可以通过命令行输入`python`或`python3`启动解释器。 2. **标识符**:...

    python中单下划线(_)和双下划线(__)的特殊用法

    总结来说,Python通过单下划线和双下划线提供了不同层级的命名约定,使得代码的作者可以根据需要对成员的可访问性和可见性进行控制。理解这些特殊用法,有助于更好地设计类库和模块,以及编写出更符合Python风格的...

    python基础语法总结.docx

    * 列表类型:是 Python 中使用最频繁的数据类型,支持字符、数字、字符串甚至可以包含列表(即嵌套)。列表用 \[ ] 标识,可以完成大多数集合类的数据结构实现。 * 元组类型:类似于列表,但不能二次赋值,相当于...

    python面向对象学习总结.pdf

    在Python中,通过定义私有属性(使用双下划线开头,如__private)和公开的方法来实现封装。虽然Python不强制私有属性和方法的访问限制,但是这是一种约定,表示不应该从类的外部直接访问。 2. 类和对象(Class and ...

    python中单下划线_的常见用法总结

    Python中的单下划线`_`是一个特殊符号,其用途多样,主要体现在以下几个方面: **0x01 存储上一条语句的执行结果** 在Python解释器中,`_`是一个内置变量,用于存储上一条执行的表达式的结果。这种用法最早源于...

    python知识点总结

    ### Python知识点总结 #### 一、语法基础 Python 作为一种高级编程语言,其设计初衷是易于阅读、理解和编写。在语法基础部分,我们主要关注以下几个方面: 1. **基本语法**:包括缩进规则,注释(单行注释 `#` 和...

    Python基础的总结

    - 变量命名遵循一定的规则:由数字、字母、下划线组成,不能以数字开头,不能是关键字,具有唯一性,建议使用有意义的英文或下划线分隔的名称。 - 变量赋值后指向数据,可以改变,即“渣男属性,喜新厌旧”。 - ...

    Python基础知识总结(期末复习精简版).doc

    - **命名**:Python变量名应遵循驼峰式或下划线分隔的命名规范,不能以数字开头,且避免使用保留字。 - **变量**:在Python中,声明变量不需要特定关键字,直接赋值即可。 - **保留字**:如`if`, `else`, `for`, ...

    最全Python基础的知识点复习完整版.doc.pdf

    ### Python基础知识精讲 #### 一、切片操作详解 **切片操作**是Python中处理序列(如列表、元组、字符串等...- 避免使用Python的关键字作为变量名。 了解并遵循这些基本的命名规则有助于编写更清晰、更规范的代码。

Global site tag (gtag.js) - Google Analytics