在python中、实例变量在类的内部通过_[宜配屋]听图阁

1、类变量、实例变量概念

类变量:

类变量就是定义在类中,但是在函数体之外的变量。通常不使用self.变量名赋值的变量。类变量通常不作为类的实例变量的,类变量对于所有实例化的对象中是公用的。

实例变量:

实例变量是定义在方法中的变量,使用self绑定到实例上的变量,只是对当前实例起作用。

2、访问

类变量

在类的内部和外部类变量都可以直接使用className.类变量的形式访问。但是在类的内部,也可以使用self.类变量来访问,但是这个是用含义就不同了(后面使用代码验证)。

实例变量

在类的内部,实例变量self.实例变量的形式访问;在类的外部使用对象名。实例变量的形式访问。实例变量是绑定到一个实例上的变量,它只是属于这个绑定的实力。而区别类变量的就是类变量是所有的来自用一个类的实例所共享。我们看到这里会有这样的疑问!

如果说类变量对所有来自这个类的所有实例所共享,那么假如我一个实例去改变了这个类变量(假设使用这样的操作object.类变量 = value)的值,那么对于其他的实例是不是都是可见的?

答案是否定的,下面验证。

class A(object):

# 定义一个类变量,初值是10

class_var = 10

print id(class_var)

def foo(self):

print '在类中访问类变量:A.class_var=', A.class_var

print '在类中访问实例变量: self.class_var=', self, self.class_var

# 改变实例变量的值

self.class_var = 40

print '修改后访问类变量:A.class_var=', A.class_var

print '修改后访问实例变量 self.class_var=',self, self.class_var

# 这里的class_var和函数外面的class_var不是同一个东西,这是一个局部变量

class_var = 20

print id(class_var)

print 'class_var=', class_var

A.class_var = 15

print 'A.class_var=', A.class_var

print 'class_var=',class_var

print 'self.class_var=',self.class_var

obj1 = A()

obj2 = A()

obj3 = A()

obj1.foo()

print A.class_var

print obj1.class_var

print obj2.class_var

print obj3.class_var

Output:

49964144

在类中访问类变量:A.class_var= 10

在类中访问实例变量: self.class_var= <__main__.a object at> 10

修改后访问类变量:A.class_var= 10

修改后访问实例变量 self.class_var= <__main__.a object at> 40

49963904

class_var= 20

A.class_var= 15

class_var= 20

self.class_var= 40

15

40

15

15

从上面运行的结果分析:当使用self.class_var形式访问类变量的之后,如果修改self.class_var的值,可以发现,类变量的值没有变化;不放心我们在修改类变量的值,发现self.class_var的值也没有受到影响。

从最后打印obj2和obj3这两个都来自于一个类的实例中的类变量都是和修改后的类变量一样,表示他们是共享类变量的。

3、总结

1、类变量可以使用className.类变量和self.类变量两种方式访问。

2、如果使用self.类变量的方式访问并重新赋值后,这个变量就会成为实例变量和self绑定,实际上就变成了一个实例变量,实例变量会屏蔽掉类变量的值。

3、类变量是共享的,最好使用类名的方式来访问类变量。

4、类变量通过sel访问时,就会被转化成实力变量,被绑定到特定的实例上。

5、实例变量(self)的形式对类变量重新赋值后,类变量的值不会随之变化。

6、实例变量对每一个对象是不可见的,每一个对象拥有着可能不同的值。

以上我们整理的知识点希望能够帮助到大家,感谢大家对【听图阁-专注于Python设计】的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355761.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java第五次作业

《Java技术》第五次作业 &#xff08;一&#xff09;学习总结 1.在上周完成的思维导图基础上&#xff0c;补充本周的学习内容&#xff0c;对Java面向对象编程的知识点做一个全面的总结。 2.汽车租赁公司&#xff0c;出租汽车种类有客车、货车和皮卡三种&#xff0c;每辆汽车除了…

mysqld已删除但仍占用空间的_Windows 10删除备份文件方法

Windows具有许多内置备份功能&#xff0c;包括卷影副本&#xff0c;系统还原点和整个系统备份。尽管它们既不是最可靠也不是功能最丰富的备份解决方案&#xff0c;但它们确实提供了一种备份系统和个人数据的不错的方式。Windows内置备份工具的问题之一是它们几乎过于安静和方便…

服务器维修天长,台达精密空调服务天长市供电局

【IT168 厂商动态】项目背景&#xff1a;天长市供电局率属于安徽省供电局&#xff0c;主要负责其辖区内的电力生产与供应。本项目包括三个机房&#xff1a;南、北数据中心机房以及资料中心;台达风冷型精密空调为上述机房的IT设备运行提供7*24小时恒温恒湿高洁净度的运行环境&am…

JS续

JS中的事件 [JS中的事件分类] * 1、鼠标事件&#xff1a; * click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup * * 2、键盘事件&#xff1a; * keydown: 键盘按下去触发 * keypress: 键盘按下并松开的瞬间触发 * keyup: 键盘抬起时触发 * * [注意事项&#xff…

终端主题_泛终端全渠道新模式中国移动5G泛智能终端渠道生态合作峰会开幕

11月20日&#xff0c;以“泛终端 全渠道 新业态 新模式”为主题的中国移动5G泛智能终端渠道生态合作峰会在广州成功举办。作为2020中国移动全球合作伙伴大会期间举办的重要主题峰会之一&#xff0c;该峰会吸引了超过100家终端、渠道等产业链合作伙伴&#xff0c;会议通过咪咕直…

jq中查找上级_【节能学院】电能管理系统在福州三岐小学项目中的设计及应用...

1项目概述该项目总投资约2.6亿元&#xff0c;建筑规模为4.8万㎡&#xff0c;建设地点在南屿镇葛岐村、晓岐村。项目设有教学楼A区、教学楼B区、教学楼C区、综合楼一区、综合楼二区、室内篮球场、室内游泳馆、足球场等。此电能管理系统为Acrel-3000V7.1系统&#xff0c;在结构设…

5!(简单的了解for循环与递归的区别)

public class Five_factorial {public static void main(String[] args) {/*** 1.普通方法实现5的阶乘*/int f 1;for (int i 5; i > 1; i--) {f * i;}System.out.println(f);/*** 2.运用递归实现5的阶乘*/int n 5;Five_factorial five_factorial new Five_factorial();f…

在本地安装独立的HBase和Apache Storm简单集群

我们主要使用Apache Storm进行流处理&#xff0c;并使用Apache HBase作为NoSQL宽列数据库。 即使Apache Cassandra是一个出色的NoSQL数据库&#xff0c;由于Cloudera的分布以及与Cassandra相比更加一致 &#xff08;请检查CAP定理 &#xff09;&#xff0c;我们还是更喜欢HBas…

auc 和loss_深入理解AUC

在机器学习的评估指标中&#xff0c;AUC是一个最常见也是最常用的指标之一。AUC本身的定义是基于几何的&#xff0c;但是其意义十分重要&#xff0c;应用十分广泛。本文作者深入理解AUC&#xff0c;并总结于下。AUC是什么在统计和机器学习中&#xff0c;常常用AUC来评估二分类模…

[HTML5amp;CSS3]Transform具体解释

Transform字面上就是变形&#xff0c;改变的意思。在CSS3中transform主要包含以下几种&#xff1a;旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。以下我们一起来看看CSS3中transform的旋转rotate、扭曲skew、缩放scale和移动translate详细怎样实现。老样…

perl转python_将行转换为perl或python中的列

我认为你可以用一张桌子做好&#xff0c;所以我会告诉你如何做你要求的和我认为好的。$name "";$data {};open(IN, "build.txt");foreach my $line (){if($line ~ /Re: (.*)\n/) { # get building name$name $1;$name ~ s/ /_/;$data->{$name} []; …

比亚迪定薪后多久给offer_比亚迪车主给爱车做四门隔音,没想到两年后肠子都悔青...

许多车主都有过这样的经历&#xff1a;总感觉爱车的静谧性不够如意&#xff0c;为了提升隔音效果改善驾乘质感&#xff0c;往往产生给爱车做一个全车隔音的冲动。只不过冲动归冲动&#xff0c;在着手对车子进行隔音改造工程前&#xff0c;一定要选择靠谱的隔音材料&#xff0c;…

Centos开机自己主动挂载windows中的ntfs磁盘

装了windows和centos双系统后&#xff0c;发如今centos中无法进入windows中的磁盘&#xff0c;更不要说查看磁盘里的文件了&#xff01; 原来默认情况下。centos不支持Widows NTFS硬盘分区读写&#xff0c;要想把NTFS格式的磁盘挂载到CentOS 以下须要安装第三方软件ntfs-3g。…

人工智能方向毕业设计_毕业季|广州美术学院视觉设计学院毕业设计展

视觉艺术设计学院成立于2010年9月&#xff0c;由广州美术学院最传统的装潢系和新兴的数码艺术设计系联合组建而成&#xff0c;2018年11月&#xff0c;艺术与科技专业并入学院。学院现拥有视觉传达设计、数字媒体艺术设计、动画、艺术与科技4个专业。视觉文化设计工作室 视觉文化…

江西住建云实名认证怎么弄_王者荣耀无限时间怎么弄 2020年无限时间账号

腾讯游戏都是有健康系统的&#xff0c;王者荣耀自然也不例外&#xff0c;王者还是第一批出健康系统的游戏&#xff0c;今年健康系统同时有时间限制和充值限制&#xff0c;未成年玩家一天最多只能玩1.5个小时&#xff0c;游戏现在有传闻无限时间账号&#xff0c;那么无限时间怎么…

coherence安装_在Oracle Coherence中分发Spring Bean

coherence安装本文展示了如何通过使用Oracle Coherence中的EntryProcessor和可移植对象格式&#xff08;POF&#xff09;功能来分发Spring Bean。 Coherence通过EntryProcessor API支持无锁编程模型。 此功能通过减少网络访问并在条目上执行隐式的低级锁定来提高系统性能。 此隐…

spring 的aop操作

转载于:https://www.cnblogs.com/hwgok/p/6760663.html

excel 公式 单引号 concat_Excel两个新函数帮你快速搞定批量连接

如果将两个文本连接起来&#xff0c;通常第一反应用连接符号"&"。使用连接符&连接文本字符记得曾经有记者采访刘强东问奶茶妹妹漂不漂亮&#xff0c;他竟然回答看不出来好赖…当时真觉得这家伙身在福中不知福&#xff0c;饱汉不知饿汉饥。果然之后还闹出一些…

向量表示 运动抛物线_ALevel物理知识点详解:抛物线运动

考培雅思留学申请一站式服务&#xff0c;专为有志于申请英国G5超级精英大学以及澳洲八大、新加坡顶尖高校的中学生设计。开设有数学、进阶数学、物理、化学、生物、经济、会计等理科、商科、人文类课程&#xff0c; 学生可根据优势学科、兴趣爱好自由选择3-4门学习。锦秋A-Leve…

练习~虚拟线上银行

数据库操作&#xff0c;网络编程及多线程的综合练习~ 客户端&#xff1a; UI层 1 import javax.swing.*;2 import java.awt.*;3 import java.awt.event.*;4 5 public class ATMUI{6 7 //主方法8 public static void main(String [] args){9 ATMUI ui new ATMUI();…