当前位置: 首页 > 编程笔记 >

实例讲解Python中的私有属性

姬慎之
2023-03-14
本文向大家介绍实例讲解Python中的私有属性,包括了实例讲解Python中的私有属性的使用技巧和注意事项,需要的朋友参考一下

在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子:


#! encoding=UTF-8

 

class A:

    def __init__(self):

         

        # 定义私有属性

        self.__name = "wangwu"

         

        # 普通属性定义

        self.age = 19

         

a = A()

 

# 正常输出

print a.age

 

# 提示找不到属性

print a.__name


执行输出:

Traceback (most recent call last):

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 19, in <module>

    print a.__name

AttributeError: A instance has no attribute '__name'


访问私有属性__name时居然提示找不到属性成员而不是提示权限之类的,于是当你这么写却不报错:

#! encoding=UTF-8

 

class A:

    def __init__(self):

         

        # 定义私有属性

        self.__name = "wangwu"

         

        # 普通属性定义

        self.age = 19

         

 

a = A()

 

a.__name = "lisi"

print a.__name


执行结果:
1
lisi
在Python中就算继承也不能相互访问私有变量,如:

#! encoding=UTF-8

 

class A:

    def __init__(self):

         

        # 定义私有属性

        self.__name = "wangwu"

         

        # 普通属性定义

        self.age = 19

         

 

class B(A):

    def sayName(self):

        print self.__name

         

 

b = B()

b.sayName()


执行结果:

Traceback (most recent call last):

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 19, in <module>

    b.sayName()

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 15, in sayName

    print self.__name

AttributeError: B instance has no attribute '_B__name'


或者父类访问子类的私有属性也不可以,如:

#! encoding=UTF-8

 

class A:

    def say(self):

        print self.name

        print self.__age

         

 

class B(A):

    def __init__(self):

        self.name = "wangwu"

        self.__age = 20

 

b = B()

b.say()


执行结果:

wangwu

Traceback (most recent call last):

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 15, in <module>

    b.say()

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 6, in say

    print self.__age

AttributeError: B instance has no attribute '_A__age'

 类似资料:
  • 本文向大家介绍Python中logging实例讲解,包括了Python中logging实例讲解的使用技巧和注意事项,需要的朋友参考一下 logging 的基本用法网上很多,这里就不介绍了。在引入正文之前,先来看一个需求: 假设需要将某功能封装成类库供他人使用,如何处理类库中的日志? 数年前在一个 C# 开发的项目中,我用了这样的方法:定义一个 logging 基类,所有需要用到日志的类都继承这个基

  • 本文向大家介绍Python 私有函数的实例详解,包括了Python 私有函数的实例详解的使用技巧和注意事项,需要的朋友参考一下 Python 私有函数的实例详解 与大多数语言一样,Python 也有私有的概念: • 私有函数不可以从它们的模块外面被调用 • 私有类方法不能够从它们的类外面被调用 • 私有属性不能够从它们的类外面被访问 与大多数的语言不同,一个 Python 函数,方法,或属性是私有

  • 本文向大家介绍python中numpy.empty()函数实例讲解,包括了python中numpy.empty()函数实例讲解的使用技巧和注意事项,需要的朋友参考一下 在使用python编程的过程中,想要快速的创建ndarray数组,可以使用numpy.empty()函数。numpy.empty()函数所创建的数组内所有元素均为空,没有实际意义,所以它也是创建数组最快的方法。本文介绍python中

  • 本文向大家介绍python中的多重继承实例讲解,包括了python中的多重继承实例讲解的使用技巧和注意事项,需要的朋友参考一下 python和C++一样,支持多继承。概念虽然容易,但是困难的工作是如果子类调用一个自身没有定义的属性,它是按照何种顺序去到父类寻找呢,尤其是众多父类中有多个都包含该同名属性。 对经典类和新式类来说,属性的查找顺序是不同的。现在我们分别看一下经典类和新式类两种不同的表现:

  • 本文向大家介绍vue组件watch属性实例讲解,包括了vue组件watch属性实例讲解的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了vue组件watch属性的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍python list转矩阵的实例讲解,包括了python list转矩阵的实例讲解的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇python list转矩阵的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。