(更新时间)2021年3月25日 python基础知识(类属性和实例属性)
发布日期:2021-06-29 15:14:46
浏览次数:2
分类:技术文章
本文共 1509 字,大约阅读时间需要 5 分钟。
1.类属性
"""对象(实例对象): 通过class定义的类创建的, 即通过类实例化来的, 又称为实例, 实例对象实例对象定义的属性称为是 实例属性. 通过实例对象(self) 定义的属性都是实例属性实例属性: 每个实例对象中都存在一份,并且值可能是不一样的类(类对象): 通过class定义的,又称为 类对象, 是python解释器在创建类的时候自动创建的作用: 1. 通过类对象,去定义实例对象 2. 类对象可以保存一些属性信息,称为类属性类属性的定义: 在类内部,方法外部定义的变量就是类属性类属性,字内存中只有一份如何确定一个属性是该定义为实例属性还是类属性?先假设这个属性为实例属性,查看这个属性值对于不同的实例对象, 属性值是否都一样,并且需要同时变化.如果是, 则可以定义为类属性如果不是,则可以定义为实例属性"""class Dog(object): # 定义类属性, 类名 class_name = '狗类' def __init__(self, name, age): # 定义的都是实例属性 self.name = name self.age = age# 创建Dog 类对象dog = Dog('大黄', 2)# print(dog.__dict__) # 打印dog对象具有的属性# 类名.__dict__ 查看类对象具有的属性# print(Dog.__dict__)# 访问类属性# 类名.类属性print(Dog.class_name)# 修改类属性 类名.类属性 = 属性值Dog.class_name = 'Dog类'print(Dog.class_name)# 补充, 注意: 如果不存在和实例属性名相同的类属性.则可以使用实例对象访问类属性的值# 如果存在重名,则使用实例属性访问的一定是实例属性,不是类属性print(dog.class_name)
2.实例属性(对象属性)
class People(object): address = '山东' # 类属性 def __init__(self): self.name = 'xiaowang' # 实例属性 self.age = 20 # 实例属性p = People()p.age = 12 # 实例属性print(p.address) # 正确print(p.name) # 正确print(p.age) # 正确print(People.address) # 正确print(People.name) # 错误print(People.age) # 错误
3.通过实例(对象)去修改类属性
class People(object): country = 'china' #类属性print(People.country)p = People()print(p.country)p.country = 'japan' print(p.country) # 实例属性会屏蔽掉同名的类属性print(People.country)del p.country # 删除实例属性print(p.country)
总结
- 如果需要在类外修改类属性,必须通过类对象去引用然后进行修改。如果通过实例对象去引用,会产生一个同名的实例属性,这种方式修改的是实例属性,不会影响到类属性,并且之后如果通过实例对象去引用该名称的属性,实例属性会强制屏蔽掉类属性,即引用的是实例属性,除非删除了该实例属性。
转载地址:https://codeboy.blog.csdn.net/article/details/115214854 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月28日 06时43分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于 Hystrix 高并发服务限流第 1 篇 —— 必须了解的相关概念
2019-04-29
基于 Hystrix 高并发服务限流第 2 篇 —— 服务隔离(线程池隔离、信号量隔离)
2019-04-29
基于 Hystrix 高并发服务限流第 3 篇 —— 服务熔断、服务降级
2019-04-29
基于 Hystrix 高并发服务限流第 5 篇 —— Hystrix 监控
2019-04-29
Eureka 如何快速的、优雅的停止某个微服务
2019-04-29
Eureka 实现安全认证
2019-04-29
Nginx 反向代理、负载均衡配置、Location正则表达式
2019-04-29
SpringBoot + WebSocket 实现前后端的收发消息
2019-04-29
SpringBoot 整合 JWT 实现统一认证
2019-04-29
SpringBoot 使用 CompletableFuture 实现非阻塞异步编程
2019-04-29
即刻就业:本科毕业如何快速高薪就业?
2019-04-29
JAVA中的浮点数与二进制
2019-04-29
JAVA笔记(二)--Java初始
2019-04-29
JAVA笔记(三)--变量及运算符
2019-04-29
JAVA笔记(四)--三大结构语句
2019-04-29
JAVA语言基础(五)--数组
2019-04-29
JAVA项目案例详解带代码
2019-04-29