Python类如何定义私有变量

这篇文章主要介绍了Python类如何定义私有变量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

前言

在java 的类中,如果你要定义一个私有变量,可以用修饰词 private,那么在Python 的类中呢,Python中没public private之类的修饰词,那Python 是如何定义私有变量的呢?

私有变量

在Python 类中定义私有变量,只要在变量前加 __ (两个下划线) ,那么该类的实例就不能引用了,看下面实例

>>> class demo(object):
...   __a =1
...   b = 2
...
>>> d = demo()
>>> print(d.b)
>>> d.__a
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'demo' object has no attribute '__a'

从上面的示例中可以看到,类demo的实例d可以不能调用变量__a,那实例d 有没有办法调用到__a呢,看下面的调用语法:

>>> d._demo__a
1

实例名+'_'+类名+私有变量 ,就能调用。大家记住这样的语法。

私有方法

私有方法同私有变量的语法也是一样的,我们直接看示例:

>>> class fun(object):
...   def __a(self):
...       print('聚焦学院AAA')
...   def b(self):
...       print('聚焦学院BBB')
...
>>> f = fun()
>>> f.b()
聚焦学院BBB
>>> f.__a()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'fun' object has no attribute '__a'
>>> f._fun__a()
聚焦学院AAA

从上面的示例中可以看到,类的实例要调用私有方法也是和调用私有变量的语法一样。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python 变量初始化空列表的例子

    python 不能写new_loss=old_loss=[] 这样 两个变量实际上是同一个list 要分开写new_loss=[] Old_loss=[] 以下列数据文件为例: def analyze_mmr(fn): #初始化方法一 new_loss = [] old_loss = [] #初始化方法二 new_loss = old_loss =[] with open(fn, encoding='utf8') as f: for line in f: parts = line.split('

  • 对python中不同模块(函数、类、变量)的调用详解

    首先,先介绍两种引入模块的方法. 法一:将整个文件引入 import 文件名 文件名.函数名( ) / 文件名.类名 通过这个方法可以运行另外一个文件里的函数 法二:只引入某个文件中一个类/函数/变量 需要从某个文件中引入多个函数或变量时,用逗号隔开即可 from 文件名 import 函数名,类名,变量名 接下来,通过一个具体的例子说明引入 模块的具体方法: 假设新建一个python包test2,里边有一个名为run.py的python文件,run.py文件里有一个名为running()的函数

  • 解析python的局部变量和全局变量

    局部变量 什么是局部变量 通俗定义:函数内部定义的变量就叫局部变量. 话不多说,代码如下: def test1(): a = 300 # 定义一个局部变量a,并初始化300 print("--test1--修改前:a=%s" % a) a = 200 # 给变量a重新赋值200 print("--test1--修改后:a=%s" % a) def test2(): a = 400 # 定义另一个局部变量a,并初始化400 print("--test2--修

  • 图解python全局变量与局部变量相关知识

    这篇文章主要介绍了图解python全局变量与局部变量相关知识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 了解全局变量和局部变量之前,我们先来了解一下作用域 a = 10 def func(): b = 20 def inner(): c = 30 以上面这个程序为例:打印a,b,c 可以看到只有a打印 10 ,b和c都报错,这就是作用域的问题. 我们把新创建的一个.py文件看做事一个模块,在模块内定义的变量,如a,就是这个模块的全局变量,作

  • python实现连续变量最优分箱详解--CART算法

    关于变量分箱主要分为两大类:有监督型和无监督型 对应的分箱方法: A. 无监督:(1) 等宽 (2) 等频 (3) 聚类 B. 有监督:(1) 卡方分箱法(ChiMerge) (2) ID3.C4.5.CART等单变量决策树算法 (3) 信用评分建模的IV最大化分箱 等 本篇使用python,基于CART算法对连续变量进行最优分箱 由于CART是决策树分类算法,所以相当于是单变量决策树分类. 简单介绍下理论: CART是二叉树,每次仅进行二元分类,对于连续性变量,方法是依次计算相邻两元素值的中位

  • 对python 中class与变量的使用方法详解

    python中的变量定义是很灵活的,很容易搞混淆,特别是对于class的变量的定义,如何定义使用类里的变量是我们维护代码和保证代码稳定性的关键. #!/usr/bin/python #encoding:utf-8 global_variable_1 = 'global_variable' class MyClass(): class_var_1 = 'class_val_1' # define class variable here def __init__(self, param): self

  • python中for循环变量作用域及用法详解

    在讲这个话题前,首先我们来看一道题: 代码1: def foo(): return [lambda x: x**i for i in range(1,5,2)] print([f(3) for f in foo()]) 伙伴们,你们认为这里产生的结果是什么呢?我们再来看下这题的变体: 代码:2 def foo(): functions=[] for i in range(1,5,2): def inside_fun(x): return x ** i functions.append(insid

  • Python中实现输入超时及如何通过变量获取变量名

    背景介绍 开发中遇到了一个需求:程序运行到某处时需要用户确认, 但不能一直傻等, 后面的程序不能被一直阻塞, 需要有个超时限制, 也就是这个程序如果在一段时间后还没有得到用户输入就执行默认操作. 解决思路 – 多线程法 我就想到了用多线程的方式, 开启一个子线程用stdin(比如python的input函数)获取用户输入, 主线程里设置线程启动和超时. 创建线程 Python中使用多线程很方便, threading.Threaded(函数, 参数表)然后thread.start就好了. 只是有一

  • Python类如何定义私有变量

    这篇文章主要介绍了Python类如何定义私有变量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前言 在java 的类中,如果你要定义一个私有变量,可以用修饰词 private,那么在Python 的类中呢,Python中没public private之类的修饰词,那Python 是如何定义私有变量的呢? 私有变量 在Python 类中定义私有变量,只要在变量前加 __ (两个下划线) ,那么该类的实例就不能引用了,看下面实例 >>>

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

    本文实例讲述了Python面向对象程序设计之私有变量,私有方法原理与用法.分享给大家供大家参考,具体如下: 私有变量,私有方法: python的私有化是为了规划私有属性,避免非相关的访问[假如!我有老婆,你不能直接知道我老婆是谁,你只有问我才会知道,即我的私有属性只有我知道] 在python中定义私有变量和私有方法只需要在变量名或函数名前加上 "__"两个下划线 在类内部的方法中使用时  self.__变量名或函数名. 实际上,如果真要访问私有变量和私有方法,也是可以访问的,因为实际上

  • Python类的定义和使用详情

    目录 1.基础概念 2.定义一个Person类 3.类定义 4.类方法定义 5.类的继承 6.类的公有,私有 7.子类调用父类的方法 1.基础概念 在面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance),其中类是某一批对象的抽象,可以把类理解成某种概念:对象才是一个具体存在的实体.从这个意义上看,日常所说的人,其实都是人的对象,而不是人类. Python 定义类的简单语法如下: class 类名:    执行语句...    零个到多个类

  • Python类的定义继承调用比较方法技巧

    目录 一.类的约束 二.类的定义 2.1.创建创建 2.1.1.类的导入 2.1.2.构造器 2.1.3.类属性 三.类的继承 3.1.单继承 3.2.多继承 3.3.调用父类方法 3.4.属性扩展 3.4.1.完全扩展 3.4.2.单独扩展 四.类的调用 五.抽象类 5.1.强制类型检查 六.类的比较 一.类的约束 # _开头: 私有变量: # __开问: 私有变量,不能被继承: # __xxx__: 能被访问,不能被继承: class A: def __init__(self): self.

  • python类参数定义及数据扩展方式unsqueeze/expand

    目录 类的参数定义 数据扩展 类的参数定义 将conda环境设置为ai,conda activate ai 这个文件的由来: 由于在yolov1的pytorch实现的损失函数中,看到继承了nn.Module,并且其中两个参数不像c++那里指定类型,那么他们的类型是哪里来的 这里就是在探索这样一件事 操作逻辑: 先在类中定义了构造函数以及一个自定义函数: 构造函数定义了属性S.B,自定义函数引入两个参数,对两个参数进行调用 这里就说明参数的结构是怎么样的,取决于参数被调用了什么东西,比如这里调用了

  • JavaScript 模拟类机制及私有变量的方法及思路

    在使用一些 Javascript 框架时,或许会看到类似的代码 复制代码 代码如下: var MyClass = new Class({ initialize: function(param, ...) { this.param = param; ... }, func1: function(...) { ... } }); var myObj = new MyClass(param); myObj.func1(...); 这是一种典型的面向对象的类机制应用,与原生的 Javascript 类机

  • Python类的定义、继承及类对象使用方法简明教程

    Python编程中类的概念可以比作是某种类型集合的描述,如"人类"可以被看作一个类,然后用人类这个类定义出每个具体的人--你.我.他等作为其对象.类还拥有属性和功能,属性即类本身的一些特性,如人类有名字.身高和体重等属性,而具体值则会根据每个人的不同:功能则是类所能实现的行为,如人类拥有吃饭.走路和睡觉等功能.具体的形式如下: # 例:类的概念 class 人类: 名字 = '未命名' # 成员变量 def 说话(内容): # 成员函数 print 内容 # 成员变量赋初始值 某人 =

  • Python类super()及私有属性原理解析

    super()有参数写法: # 1.定义父类 class A(object): def __init__(self): self.num = 1 def info_print(self): print(self.num) class C(A): def __init__(self): self.num = 2 def info_print(self): print(self.num) super(C, self).__init__() super(C, self).info_print() #

  • 谈谈Python:为什么类中的私有属性可以在外部赋值并访问

    Python:为什么类中的私有属性可以在外部赋值并访问? 问题引入 在慕课网上学习Python**类中的私有属性**的时候,看到了一个同学的提问: 将count改为__count,为什么实例变量在外部仍然可以修改__count?这里print p1.__count可以打印出100 class Person(object): __count = 0 def __init__(self, name): Person.__count = Person.__count + 1 self.name = n

  • Python 类和对象详细介绍

    目录 对象 = 属性 + 方法 self是什么 公有和私有 继承 调用未绑定的父类方法 使用super函数 多重继承 组合 构造和析构 _ _init_ _(self[, …])构造方法 _ _new_ _(cls[, …])方法 _ _del_ _(self)析构方法 什么是绑定 对象 = 属性 + 方法 我们前面其实已经接触过封装的概念,把乱七八糟的数据扔进列表里面,这是一种封装,是数据层面的封装:把常用的代码段打包成一个函数,这也是一种封装,是语句层面的封装:现在我们要学习的对象,也是一种

随机推荐