zoukankan      html  css  js  c++  java
  • Python中_,__,__xx__方法区别

    _xx 单下划线开头

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

    方法就是以单下划线开头命名定义了,这种定义不会被*导入(from module import *)。

    ==================================================

    #! /usr/bin/python

    def singleton(cls):
      _instance = {} # 不建议外部调用
      def _singleton(*args, **kargs):
      if cls not in _instance:
        _instance[cls] = cls(*args, **kargs)
        return _instance[cls]
      return _singleton

    @singleton
    class A(object):
    a = 1
    def __init__(self, x = 0):
    self.x = x

    a1 = A(2)
    a2 = A(3)

    print id(a1)
    print id(a2)
    print a1.x
    print a2.x

    ==================================================

    __xx 双下划线开头

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

    class A(object):
    def __init__(self,x):
    self.__a=2
    self.x=x
    def __b(self):
    self.x=3

    a=A(2)
    print (a.x,a._A__a)
    a._A__b()
    print(a.x)
  • 相关阅读:
    一般图最大匹配
    UOJ164 线段树历史最值查询
    一个经典的排列组合面试题目
    动态代理理解
    JAVA nio
    hadoop NameNode 实现分析
    以一个上传文件的例子来说 DistributedFileSystem
    hadoop IPC 源代码分析
    hadoop DataNode实现分析
    HDFS 整体把握
  • 原文地址:https://www.cnblogs.com/liuchunxiao83/p/11195819.html
Copyright © 2011-2022 走看看