类的私有属性和方法

Python是个开放的语言,默认情况下所有的属性和方法都是公开的 或者叫公有方法,不像C++和 Java中有明确的public,private 关键字来区分私有公有。

Python默认的成员函数和成员变量都是公开的,类的私有属性指只有在类的内部使用的属性或方法,表现形式为以“__“ 属性名或方法名以双下划线开头。

class Test(object):

__count = 0 # 私有属性 __count

def get_count(self):

return self.__count # 类的内部可以使用私有属性

def set_count(self, value):

if self.__check_value(value): # 在类的内部调用类的私有方法

self.__class__.__count = value

def __check_value(self, value): # 定义类的私有方法 检查参数

if isinstance(value, int):

return True

a = Test()

print(a.get_count())

a.set_count(100)

print(a.get_count())

#a.__check_value(10) # 调用私有方法会报错

#print(a.__count)# 直接访问私有属性也会报错

应用场景

对于一些敏感的数据,我们不希望直接被的函数调用,或者不希望草率的直接object.key = value 来修改,我们可以选择将属性声名为私有的,这样从外部时无法访问该属性的,也就不能修改了,但是依然可以修改属性字典的方法来修改。

# 当然 可以使用 @proprety

class Person(object):

__name = 'Monkey'

def update_name(self, name):

self.__name = name

def get_name(self):

return self.__name

p = Person()

p.update_name('BlackMonkey')

print(p.get_name()) # BlackMonkey

print(p.__name) # 报错 AttributeError: 'Person' object has no attribute '__name'

python 私有属性_Python 私有属性和私有方法相关推荐

  1. python对象的三个属性_Python 对象属性的访问

    在 Python 中,一切皆对象.属性访问可以理解为是从一个已有的对象中获得另一个对象的方法.对象属性的访问涉及到对象的 __dict__ 属性.描述符等概念,以及 __getattribute__. ...

  2. python类属性和实例属性_Python 类属性与实例属性,类对象与实例对象用法分析...

    本文实例讲述了Python 类属性与实例属性,类对象与实例对象用法.分享给大家供大家参考,具体如下: demo.py(类属性,所有实例对象共用类属性): # 定义工具类 继承object是为了兼容py ...

  3. 定义一个属性_Python property属性

    1. 什么是property属性 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法 # ############### 定义 ###############class Foo: def ...

  4. python 连通区域_python skimage 连通性区域检测方法

    python skimage 连通性区域检测方法 涉及到的函数为 import matplotlib.pyplot as plt from skimage import measure, color ...

  5. python类的属性和对象属性_python 类属性、对象属性-阿里云开发者社区

    类的普通属性: dir(Myclass), 返回一个key列表: Myclass.__dir__,返回一个字典: 1.类的数据属性: 2.类的方法: 类的特殊属性: 1.Myclass.__name_ ...

  6. python实例属性与类属性_Python类属性与实例属性用法分析

    容器(Collections) Python附带一个模块,它包含许多容器数据类型,名字叫作collections.我们将讨论它的作用和用法. 我们将讨论的是: - defaultdict - coun ...

  7. python的实例属性_python 实例属性和类属性

    如何在一个类中定义一些常量,每个对象都可以方便访问这些常量而不用重新构造? 第一个问题,在 Python 的类里,你只需要和函数并列地声明并赋值,就可以实现这一点, 例如这段代码中的 WELCOME_ ...

  8. python面向对象属性_Python面向对象属性

    也是好久没有更新过了,今天主要想写的就是关于面向的对象的属性的问题. 属性的解释来看,能够简单的理解为方法但是是用字段的方式来调用方法.除此之外,另外一种是不加装饰器,利用python提供方式来写,根 ...

  9. python中init外面的属性_Python mock属性在\uyu init中定义和设置__

    我正在尝试为一个应用程序编写一些单元测试,我使用python mock.我对其他嘲弄库很熟悉,直到现在也没遇到过什么麻烦.我试图模拟对父类的init块中的属性集的链式调用.以下是我需要的示例:clas ...

  10. python特性和属性_Python之属性、特性和修饰符

    原博文 2018-03-17 11:08 − 作为面对对象的核心内容,将从以下一个方面进行总结: 1. property和@property 2. __getattribute__().__getat ...

最新文章

  1. IDEA中maven的命令及作用
  2. 使用C#中的ref关键字,用2个简单例子来说明
  3. 编程面试过程中最常见的10大算法
  4. Java Web整合开发(14) -- Struts 1.x 概述
  5. 使用jquery-easyui写的CRUD插件(2)
  6. JS-键盘事件之方向键移动元素
  7. 学计算机比学农好吗,学农教育效果如何?学生:“做农活比打游戏有意义”
  8. 解决pytorch softmax警告UserWarning: Implicit ....Change the call to include dim=X as an argument.
  9. 机器学习笔记——偏差vs方差
  10. ubuntu sudo apt-get update 失败 解决方法
  11. T-SQL命令性能比较– NOT IN与SQL NOT EXISTS与SQL LEFT JOIN与SQL EXCEPT
  12. 【poker】WASD变成上下左右键(方向键)的解决方法
  13. 补:关于man关于SEE ALSO(参见)中代号与vim下常用命令
  14. mac idea svn配置
  15. 盘点:2022年10款比较火的项目管理软件
  16. 【THUSC 2018】菜鸡互啄记
  17. 【HTML期末学生大作业】 制作一个简单HTML保护野生动物老虎网页设计专题(HTML+CSS)
  18. 您应该学习SwiftUI,UIKit还是同时学习两者?
  19. 基本粒子结构以及宇宙现象的徦说
  20. android avm灰色,APICloud AVM多端开发案例深度解析(上)--点餐app开发

热门文章

  1. 开源网安亮相粤港澳大湾区CIO高峰论坛,保障企业数字化安全转型
  2. 第四周【项目2-长方形周长和面积】
  3. 面试|HiveSQL常用的一些小技巧
  4. IOS 项目问题总结
  5. wap页面之iphone设备字体偏大问题
  6. 使用微软Office组件读取Excel文件
  7. 【渝粤教育】电大中专就业指导答案作业 题库
  8. linux下smbd安装使用
  9. 学好C语言从关键字开始
  10. Linux(Ubuntu 16.04)下非root用户编译安装Python 3.8.6