博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中_,__,__xx__的区别
阅读量:5887 次
发布时间:2019-06-19

本文共 1114 字,大约阅读时间需要 3 分钟。

_xx 单下划线开头

Python中没有真正的私有属性或方法,可以在你想声明为私有的方法和属性前加上单下划线,以提示该属性和方法不应在外部调用.如果真的调用了也不会出错,但不符合规范.

#! /usr/bin/pythondef singleton(cls):        _instance = {}    # 不建议外部调用        def _singleton(*args, **kargs):                if cls not in _instance:                        _instance[cls] = cls(*args, **kargs)                return _instance[cls]        return _singleton@singletonclass A(object):        a = 1        def __init__(self, x = 0):                self.x = xa1 = A(2)a2 = A(3)print id(a1)print id(a2)print a1.xprint a2.x
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

__xx 双下划线开头

双下划线开头,是为了不让子类重写该属性方法.通过类的实例化时自动转换,在类中的双下划线开头的属性方法前加上”_类名”实现.

#! /usr/bin/python# -*- coding: utf-8 -*-class A(object):        def __init__(self, x):                self.__a = 2                self.x = x        def __b(self):                self.x = 3a = A(2)# 会报错,"AttributeError: 'A' object has no attribute '__a'"# print a.x, a.__a    print a.x, a._A__aa._A__b()print a.x
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

__xx__

此种写法为Python内建属性方法,最好不要在外部调用

转载于:https://www.cnblogs.com/hdk1993/p/8784557.html

你可能感兴趣的文章
cookie和session
查看>>
【java】path和classpath
查看>>
UVa 10057 - A mid-summer night's dream
查看>>
解决3 字节的 UTF-8 序列的字节 3 无效
查看>>
浅谈浏览器兼容性问题-(1)产生、看待与思
查看>>
iOS8中定位服务的变化(CLLocationManager协议方法不响应,无法回掉GPS方法,不出现获取权限提示)...
查看>>
BeanUtils\DBUtils
查看>>
VC 创建托盘,托盘tooltip。右键托盘菜单,点击别的地方会隐藏掉的问题。
查看>>
第一天,新的定义
查看>>
WPF EventSetter Handler Command
查看>>
polya定理,环形涂色
查看>>
day4-装饰器前奏
查看>>
【Jest】笔记三:全局变量
查看>>
forward和redirect的区别
查看>>
使用JavaMail完成邮件的编写
查看>>
洛谷P1576 最小花费
查看>>
封装了一个类,可生成验证码,缩略图,及水印图
查看>>
文件服务器 之 Debian下pureftpd的安装心得
查看>>
第一阶段项目总结
查看>>
Java集合详解
查看>>