`
m4774411wang
  • 浏览: 112626 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

分享python 私有属性和方法

 
阅读更多

python默认的成员函数和成员变量都是公开的,python私有属性和方法没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只需要在变量名或函数名前加上 "__"两个下划线,那么这个函数或变量就会为私有的了。 在内部,python使用一种 name mangling 技术,将 __membername替换成 _classname__membername,所以你在外部使用原来的私有成员的名字时,会提示找不到。 比如:

class Person:

   def __init__(self):
       self.__name = 'haha'#私有属性
       self.age = 22

   def __get_name(self):##私有方法
       return self.__name

   def get_age(self):
       return self.age

person = Person()
print person.get_age()
print person.__get_name()

运行结果是:22 Traceback (most recent call last): File "E:\pythoner\zenghe\jay.py", line 38, in print person.__get_name() AttributeError: Person instance has no attribute '__get_name'

我们这里定义的__name是私有属性,__get_name()是私有方法。如果直接访问的话,会提示找不到相关的属性或者方法,但是如果你真要访问私 有的相关数据的话, 也是可以访问的,严格地说,私有方法在它们的类外是可以访问的,只是不容易 处理。在 Python 中没有什么是真正私有的;在内部,私有方法和属性的名字被忽然改变和恢复,以致于使得它们看上去用它们给定的名字是无法使用的   

分享到:
评论

相关推荐

    python私有属性和方法实例分析

    本文实例分析了python的私有属性和方法。分享给大家供大家参考。具体实现方法如下: python默认的成员函数和成员变量都是公开的,并且没有类似别的语言的public,private等关键词来修饰。 在python中定义私有变量只...

    Python 类的私有属性和私有方法实例分析

    本文实例讲述了Python 类的私有属性和私有方法。分享给大家供大家参考,具体如下: xx:公有变量 _xx:公有变量或方法,不能通过import导入其他模块(只有模块内部使用)。类对象和子类可以访问 __xx:私有变量或方法(伪...

    Python面向对象之私有属性和私有方法应用案例分析

    本文实例讲述了Python面向对象之私有属性和私有方法。分享给大家供大家参考,具体如下: 01. 应用场景及定义方式 应用场景 在实际开发中,对象 的 某些属性或方法 可能只希望 在对象的内部被使用,而 不希望在外部被...

    Python面向对象程序设计之私有属性及私有方法示例

    本文实例讲述了Python面向对象程序设计之私有属性及私有方法。分享给大家供大家参考,具体如下: 如果有一个对象,当需要对其进行修改属性时,有2种方法: (1)对象名.属性名=数据—->直接修改 (2)对象名.方法名...

    老生常谈python的私有公有属性(必看篇)

    __name="私有属性" def func(self): print(C.__name) class sub_C(C): def info(self): print(C.__name)#派生类中不可以访问父类的私有字段 obj=C() obj.func() obj=sub_C() obj.info() 方法、属性的访问于上述...

    python直接访问私有属性的简单方法

    实例化对象名._类名__私有属性名 class Flylove: price = 123 def __init__(self): ...以上这篇python直接访问私有属性的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大

    Python面向对象程序设计之私有变量,私有方法原理与用法分析

    python的私有化是为了规划私有属性,避免非相关的访问【假如!我有老婆,你不能直接知道我老婆是谁,你只有问我才会知道,即我的私有属性只有我知道】 在python中定义私有变量和私有方法只需要在变量名或函数名前...

    Python 私有化操作实例分析

    _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 _xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到) xx:双前后下划线,用户名字...

    Python编程之属性和方法实例详解

    本文实例讲述了Python编程中属性和方法使用技巧。分享给大家供大家参考。具体分析如下: 一、属性 在python中,属性分为公有属性和私有属性,公有属性可以在类的外部调用,私有属性不能在类的外部调用。公有属性可以...

    python中私有函数调用方法解密

    ③ 私有属性不能够从它们的类外面被访问 与大多数的语言不同,一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字。 如果一个 Python 函数,类方法,或属性的名字以两个下划线开始(但不是结束),...

    Python可变和不可变、类的私有属性实例分析

    本文实例讲述了Python可变和不可变、类的私有属性。分享给大家供大家参考,具体如下: 可变和不可变 items = [] print(id(list)) items.append(2) # items值改变了 print(id(list)) # 但内存地址没有变 id()函数...

    中文版的python指导

    - **dir()函数**:介绍了`dir()`函数的使用方法,可用于获取模块、类或对象的所有属性和方法。 - **包**:阐述了包的定义及使用方法,以及如何组织多个相关模块。 - **从包中导入所有内容(import*)**:讨论了如何...

    Python封装原理与实现方法详解

     隐藏对象的属性和实现细节,仅对外提供公共访问方式。 【好处】 1. 将变化隔离; 2. 便于使用; 3. 提高复用性; 4. 提高安全性; 【封装原则】 1. 将不需要对外提供的内容都隐藏起来; 2. 把属性都隐藏,提供公共...

    python基础教程视频

    - **封装**:讨论封装的作用,如何使用私有属性和方法保护类内部状态。 #### 5. 文件操作与异常处理 - **文件读写**:学习如何使用Python进行文件的读取与写入操作。 - **异常处理**:掌握try-except语句捕获异常,...

    python3.4 tutorial指导手册英文版

    - **dir() 函数的用途**:解释 dir() 函数的作用,即获取对象的所有属性和方法。 - **使用示例**:提供示例代码说明如何使用 dir() 函数。 ##### 6.4 包 (Packages) - **包的概念**:介绍包的概念及其在模块组织中...

    Python3高级核心技术97讲-视频课程资源网盘链接提取码下载 .txt

    3. **封装性**:私有属性和方法的实现,__slots__ 的使用。 4. **抽象基类**:ABC(Abstract Base Classes)的概念及其在OOP中的作用。 ### 三、高级特性 1. **装饰器**:装饰器的基本概念、使用方式以及应用场景...

    Python面试题必问99题.pdf

    - 封装的概念,包括私有变量和方法的使用,以及如何通过property装饰器将方法转换为属性。 5. 运算符: - 位运算符的使用,包括位与(&)、位或(|)、位非(~)、位异或(^)、左移()和右移(>>)。 - 逻辑运算符and和or...

    Python面试题 最常见的36道Python面试题你能答对多少?附带答案 共27页.pdf

    继承是面向对象编程的关键特性,允许子类继承父类的属性和方法。Python支持单继承、多继承、多级继承、分层继承和混合继承等多种方式。 7. **Flask框架** Flask是一个轻量级的Web应用框架,基于Werkzeug WSGI工具...

    Python入门学习资料

    - **封装性**:通过私有属性和方法实现代码的隐藏性,增强程序安全性。 #### 五、文件操作与异常处理 - **文件读写**:掌握如何打开、读取、写入和关闭文件。 - **异常处理**:学会使用try-except语句捕获并处理...

    python入门教程pdf

    **4.3 dir()函式**:介绍如何使用dir()函数获取对象的所有属性和方法。 **4.4 包**: - **包的概念**:解释什么是包以及它在组织大型项目中的作用。 - **从包中导入\***:探讨如何从包中导入所有模块。 - **内部包...

Global site tag (gtag.js) - Google Analytics