zoukankan      html  css  js  c++  java
  • python 类的私有属性和方法 (转载)

    转载:http://www.runoob.com/python/python-object.html

    类属性与方法

    类的私有属性

    __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs

    类的方法

    在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数

    类的私有方法

    __private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用 self.__private_methods

    实例

    #!/usr/bin/python # -*- coding: UTF-8 -*- class JustCounter: __secretCount = 0 # 私有变量 publicCount = 0 # 公开变量 def count(self): self.__secretCount += 1 self.publicCount += 1 print self.__secretCount counter = JustCounter() counter.count() counter.count() print counter.publicCount print counter.__secretCount # 报错,实例不能访问私有变量

    Python 通过改变名称来包含类名:

    1
    2
    2
    Traceback (most recent call last):
      File "test.py", line 17, in <module>
        print counter.__secretCount  # 报错,实例不能访问私有变量
    AttributeError: JustCounter instance has no attribute '__secretCount'

    Python不允许实例化的类访问私有数据,但你可以使用 object._className__attrName 访问属性,将如下代码替换以上代码的最后一行代码:

    .........................
    print counter._JustCounter__secretCount

    执行以上代码,执行结果如下:

    1
    2
    2
    2

    单下划线、双下划线、头尾双下划线说明:

    • __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。

    • _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

    • __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

  • 相关阅读:
    Java平台调用Python平台已有算法(附源码及解析)
    java截取避免空字符丢失
    Java集合对象比对
    idea中的beautiful插件-自动生成对象set方法
    idea下maven命令打包不同配置
    提纲
    标记语言入门
    react入门
    深入理解React、Redux
    css伪类 伪元素
  • 原文地址:https://www.cnblogs.com/brownz/p/8777323.html
Copyright © 2011-2022 走看看