Python类变量和实例变量区别

类变量:定义在类里面,通过类名或对象名引用,如果是通过对象名引用,会先找有没有这个同名的实例变量,如果没有,引用到的才是类变量,类变量的更新,只能通过类名,形如 类名.a = 55 ,不要指望通过实例引用类变量来更新类变量

实例变量: 定义在方法里面的变量,一般在__init__里面,只能通过对象名引用,实例变量的增加、更新形式,形如self.a = 55 

实例变量(静态属性)【实例名.实例变量名】

1、实例变量是构造函数下的变量带self.变量

2、实例变量为每个实例本身独有,不可相互调用、新增、修改、删除,不可被类调用、新增、修改、删除

3、可以访问类变量

4、如果同时有类变量和实例变量,程序执行时,先访问实例变量,实例变量存在,会使用实例变量,实例变量不存在,会使用类变量

5、实例改类变量,不可修改,实际是在实例内存里创建了实例变量

6、新增、修改、删除实例变量n,不会影响到类变量n

7、a实例不能调用b实例的变量

8、实例变量可修改、新增、删除

类变量【类名.类变量名】

1、类变量在class内,但不在class的方法内,存在类的内存里

2、类变量是该类所有实例共享的变量,但是实例对象只能访问,不可修改,每个实例对象去访问同一个类变量都将得到相同结果【实例名.类变量名】

3、新增、修改、删除类变量n,不会影响到实例变量n

4、类无权访问实例名

5、类变量可修改、新增、删除


class Test(object):name='类的姓名' #类变量address='类的地址'def __init__(self,name,age,sex):self.name=name  #实例变量self.age=ageself.sex=sexdef test1(self):print(self.name,Test.address)def test2(self):pass
Test1=Test('test1实例的姓名',22,'男')
Test2=Test('test2实例的姓名',33,'女')
print(Test1.name,Test1.address)
print(Test2.name,Test2.address)
print(Test.name)
print(Test.age)#实验证明
#1、实例变量为每个实例独有,不可相互调用、新增、修改、删除,不可被类调用、新增、修改、删除
#2、如果同时有类变量和实例变量,程序执行时,先访问实例变量,实例变量存在,会使用实例变量,实例变量不存在,会使用类变量
#3、类无法访问实例变量"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
test1实例的姓名 类的地址
Traceback (most recent call last):
test2实例的姓名 类的地址File "C:/Users/wangli/PycharmProjects/Test/Test/test.py", line 98, in <module>
类的姓名print(Test.age)
AttributeError: type object 'Test' has no attribute 'age'Process finished with exit code 1

class Test(object):name='类的姓名' #类变量address='类的地址'def __init__(self,name,age):self.name=name  #实例变量self.age=agedef test1(self):print(self.name,Test.address)def test2(self):pass
Test1=Test('test1实例的姓名',22)
print('新增test1实例变量address为:test1实例的地址')
Test1.address='test1实例的地址' #新增实例变量
print('新增后test1实例变量address:',Test1.address)
print('新增后类变量address:',Test.address,'\n')
print('修改前test1实例变量age:',Test1.age)
print('修改test1实例变量age22为11')
Test1.age=11
print('修改后test1实例变量age:',Test1.age,'\n')print('新增类变量age为:30')
Test.age=30 #新增类变量
print('新增后test1实例变量age:',Test1.age)
print('新增后类变量age:',Test.age,'\n')print('修改前类变量address:',Test.address)
print('修改类变量address类的地址为上海市')
Test.address='上海市'
print('修改后类变量address:',Test.address,'\n')#实验证明
#1、实例变量可修改、新增、删除
#2、类变量可修改、新增、删除
#3、新增、修改、删除实例变量n,不会影响到类变量n
#4、新增、修改、删除类变量n,不会影响到实例变量n"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
新增test1实例变量address为:test1实例的地址
新增后test1实例变量address: test1实例的地址
新增后类变量address: 类的地址 修改前test1实例变量age: 22
修改test1实例变量age22为11
修改后test1实例变量age: 11 新增类变量age为:30
新增后test1实例变量age: 11
新增后类变量age: 30 修改前类变量address: 类的地址
修改类变量address类的地址为上海市
修改后类变量address: 上海市 Process finished with exit code 0

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

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

相关文章

Python类的构造方法__init__(self)和析构函数__del__详解

一、构造方法__init__(self) __init__()方法是一种特殊的方法&#xff0c;被称为类的构造函数或初始化方法&#xff0c;当创建了这个类的实例时就会调用该方法。一般用来对实例的属性进行初使化&#xff0c;如果不提供&#xff0c;Python 会给出默认的__init__方法。 class t…

【工具】Xshell安装注册以及简单属性配置

Xshell是一个强大的安全终端模拟软件&#xff0c;它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。 Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 Xshell可以在Windows界面下用来访问远端不同系统下…

使用Xftp5连接云服务器

软件详细介绍见&#xff1a;https://baike.baidu.com/item/Xftp/249096?fraladdin 软件下载链接见&#xff1a;http://www.netsarang.com/products/xfp_overview.html 安装完成打开软件出现如下界面&#xff0c;成功&#xff1a; 二、连接使用Xftp 1、打开Xftpl软件&#xff…

Python脚本做接口测试,抛弃接口测试工具是否可行?(一)

最近在学习python语言&#xff0c;一直再想&#xff0c;工作中经常性会去调试接口、测试接口&#xff0c;于是就思考一番&#xff0c;怎么能抛弃以前经常依赖使用工具做接口测试的局限性&#xff0c;换做python脚本来做呢&#xff1f;接下来就产生下如下脚本&#xff0c;觉得还…

【Linux】查看文件内容的相关命令总结

在Linux下面查看文件内容&#xff0c;不像windows那么方便&#xff0c;双击鼠标就可以搞定。在linux下面&#xff0c;所有一切都是文件&#xff0c;需要用命令来打开。 有许多命令都可以查看文件&#xff0c;不同的命令有不同的优点&#xff0c;可以针对不同的需要分别选择命令…

用SQL语句查看数据库数据量的大小

1、进入MQSQL命令行界面 2、输入密码 3、输入命令 1、进入information_schema 数据库&#xff08;存放了其他的数据库的信息&#xff09; use information_schema; 2、查询所有数据的大小&#xff1a; select concat(round(sum(data_length/1024/1024),2),MB) as data from …

Python类方法、实例方法、静态方法和属性方法详解

静态方法&#xff08;可调类变量、可被实例调用、可被类调用&#xff09; 1、用 staticmethod 装饰的不带 self 参数的方法叫做静态方法&#xff0c;类的静态方法可以没有参数&#xff0c;可以直接使用类名调用 2、静态方法名义上归类管理&#xff0c;实际中在静态方法中无法…

JavaScript部分问题

JavaScript中的相等判断 话题: JavaScript 难度: ⭐ JavaScript中的相等判断有严格判断和带隐式转换的判断两种&#xff1a; 严格判断(strict comparision): 比如&#xff0c;比较的时候不会隐式转换类型&#xff1b;抽象判断(abstract comparasion)&#xff1a;比如&#xff…

【Linux】free命令查询服务器内存信息

Linux的free命令对于很多的Linux运维来说&#xff0c;应该是非常熟悉的了。但作为一个经常使用linux系统的小白来说&#xff0c;我们也需要了解一下free命令。 free 命令显示系统内存的使用情况&#xff0c;包括物理内存、交换内存(swap)和内核缓冲区内存。 free命令的返回结果…

Python类的继承实例

类的继承可以看成对类的属性和方法的重用&#xff0c;能够大大的减少代码量&#xff0c;继承是一种创建新类的方式&#xff0c;在python中&#xff0c;新建的类可以继承一个或多个父类&#xff0c;也就是说在python中支持一个儿子继承多个爹。 通过继承创建的新类为子类或者派…

买第三便宜帽子

度度熊想去商场买一顶帽子&#xff0c;商场里有N顶帽子&#xff0c;有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子&#xff0c;问第三便宜的帽子价格是多少&#xff1f; 输入描述: 首先输入一个正整数N&#xff08;N < 50&#xff09;&#xff0c;接下来输入…

【Linux】linux服务器下的帮助命令总结

在Linux环境中&#xff0c;如果遇到困难&#xff0c;可以使用帮助命令来取得帮助。 常见的帮助命令有&#xff1a;man 命令、help 命令、info 命令。 在介绍这几个命令前&#xff0c;需要先介绍一下内建命令与外部命令&#xff0c;因为有一些查看帮助的工具在内建命令与外建命令…

Python数据驱动模块DDT

一.DDT简介 Data Driven Testing&#xff0c;数据驱动&#xff0c;简单来说就是测试数据的参数化 Python数据驱动模块DDT&#xff0c;包含类的装饰器ddt和两个方法装饰器data&#xff08;直接输入测试数据&#xff09; 通常情况下&#xff0c;data中的数据按照一个参数传递给…

服务器Ubuntu Import Error:cannot import name main

利用Xftp5进入到usr/bin 目录下&#xff0c;找到pip3. 把它拷贝到桌面上&#xff0c;用pycharm打开&#xff0c;进行如下修改&#xff1a; 把下面的三行 from pip import main if __name__ __main__:sys.exit(main())替换为&#xff1a; from pip import __main__ if __name…

【Linux】linux服务器下包管理器

通常Linux应用软件的安装包有三种&#xff1a; 1&#xff09; tar包&#xff0c;如software-1.2.3-1.tar.gz。它是使用UNIX系统的打包工具tar打包的。 2&#xff09; rpm包&#xff0c;如software-1.2.3-1.i386.rpm。它是Redhat Linux提供的一种包封装格式。 3&#xff09; dpk…

Python脚本做接口测试,抛弃接口测试工具是否可行?(二)

学习是为了更好的应用&#xff0c;之前做接口测试一直用的postman、fiddler&#xff0c;感觉用工具还是有些局限性&#xff0c;于是想着把学到的python灵活运用到接口测试中&#xff0c;于是就有了以下案例&#xff0c;思考着想用unittest做个简单的接口测试脚本&#xff0c;可…

阿里云服务器部署django项目

ubuntu自带了2.7。想要装3.5并设置为默认python版本。 安装python3.5 sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update sudo apt-get install python3.5 python --version sudo apt-get install python3-pip #装pip3设置python3为默认版本 直接执行这两个…

【Linux】ls命令查看linux目录下的内容

ls 命令是Linux下最常用的命令之一&#xff0c;用于显示指定工作目录下之内容&#xff08;列出目前工作目录所含之文件及子目录)。 本文将介绍其基本的用法和一些典型的用例 Usage: ls [OPTION]... [FILE]... 不输入参数(默认将文件名或目录名称开头为"."的视为隐藏…

ubuntu防火墙操作

教你如何开启/关闭ubuntu防火墙 目录 [隐藏] 1 安装方法2 使用方法3 推荐设置4 详细使用说明安装方法 sudo apt-get install ufw当然&#xff0c;这是有图形界面的(比较简陋)&#xff0c;在新立得里搜索gufw试试…… 使用方法 1 启用 sudo ufw enablesudo ufw default deny …

【Python】hashlib模块实现MD5加密

MD5消息摘要算法&#xff08;英语&#xff1a;MD5 Message-Digest Algorithm&#xff09;&#xff0c;一种被计算机安全领域广泛使用的密码散列函数&#xff0c;可以产生出一个128位&#xff08;16字节&#xff09;的散列值&#xff08;hash value&#xff09;&#xff0c; 用以…