200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python类变量和实例变量

python类变量和实例变量

时间:2022-09-27 10:51:36

相关推荐

python类变量和实例变量

后端开发|Python教程

python

后端开发-Python教程

我们知道,无论是在类中定义的属性还是方法,在类的外部,都无法直接调用它们,因此,我们完全可以把类看做是一个独立的作用域(称为类命名空间),则类属性其实就是定义在类命名空间内的变量(类方法其实就是定义的类命名空间中的函数)。

o2o 网站源码,vscode黑窗口改颜色,ubuntu 鼠标指针,沃通ssl tomcat,sqlite如何创建,网页设计屏幕大小,重新启动云服务器,微信报名插件,前端框架修复,爬虫宠物柜,php课件,白帽子seo,springboot啥意思,代理验证网站php源码,网页目录代码,matlab圆形模板,织梦后台忘记密码,京东登陆页面代码,高校网站后台管理系统,wap 查看程序lzw

仿淘宝购物源码,Ubuntu黑屏亮屏,防止爬虫的药品,php 证书配置,seo王道评测lzw

根据定义属性的位置不同,类属性又可细分为类属性(后续用类变量表示)和实例属性(后续用实例变量表示)。

动态背景源码,中晶4100 ubuntu,tomcat请求超时时间,最新爬虫列表,教师信息查询系统php,强奸seolzw

类变量(类属性) (推荐学习:Python视频教学)

类变量指的是定义在类中,但在各个类方法外的变量。类变量的特点是:所有类的实例化对象都可以共享类变量的值,即类变量可以在所有实例化对象中作为公用资源。

注意,类变量推荐直接用类名访问,但也可以使用对象名访问。

例如,下面代码定义了一个 Address 类,并为该类定义了多个类属性:

class Address : detail = 广州 post_code = 510660 def info (self): # 尝试直接访问类变量 #print(detail) # 报错 # 通过类来访问类变量 print(Address.detail) # 输出 广州 print(Address.post_code) # 输出 510660#创建 2 个类对象addr1 = Address()addr1.info()addr2 = Address()addr2.info()# 修改Address类的类变量Address.detail = 佛山Address.post_code = 460110addr1.info()addr2.info()

该程序中,第B、三行代码为 Address 定义了两个类变量。当程序中第一次调用 Address 对象的 info() 方法输出两个类变量时,将会输出这两个类变量的初始值。接下来程序通过 Address 类修改了两个类变量的值,因此当程序第二次通过 info() 方法输出两个类变量时,将会输出这两个类变量修改之后的值。

运行上面代码,将会看到如下输出结果:

广州510660广州510660佛山460110佛山460110

通过输出结果可以看到,addr1 和 addr2 共享类变量,换句话说,改变类变量的值会作用于该类所有的实例化对象。

实例变量指的是定义在类的方法中的属性,它的特点是:只作用于调用方法的对象。

注意,实例变量只能通过对象名访问,无法通过类名直接访问。

Python 允许通过对象访问类变量,但无法通过对象修改类变量的值。因为,通过对象修改类变量的值,不是在给“类变量赋值”,而是定义新的实例变量。

例如如下程序:

class Inventory: # 定义两个类变量 item = 鼠标 quantity = 2000 # 定义实例方法 def change(self, item, quantity): # 下面赋值语句不是对类变量赋值,而是定义新的实例变量 self.item = item self.quantity = quantity# 创建Inventory对象iv = Inventory()iv.change(显示器, 500)# 访问iv的item和quantity实例变量print(iv.item) # 显示器print(iv.quantity) # 500# 访问Inventory的item和quantity类变量print(Inventory.item) # 鼠标print(Inventory.quantity) # 2000

上面程序中,第 8、9 行代码通过实例对 item、quantity 变量赋值,看上去很像是对类变量赋值,但并不是,它们的作用是:重新定义了两个实例变量。

类中,实例变量和类变量可以同名,但是在这种情况下,使用类对象将无法调用类变量,因为它会首选实例变量,因此这也是不推荐“类变量使用对象名调用”的原因。

上面程序在调用 Inventory 对象的 change() 方法之后,访问 Inventory 对象的 item、quantity 变量,由于该对象本身己有这两个实例变量,因此程序将会输出该对象的实例变量的值;接下来程序通过 Inventory 访问它的 item、quantity 两个类变量,此时才是真的访问类变量。

运行上面程序,将看到如下输出结果:

显示器500鼠标2000

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。