类属性和实例属性名字冲突怎么办

2023-11-13

修改类属性会导致所有实例访问到的类属性全部都受影响,但是,如果在实例变量上修改类属性会发生什么问题呢?

class Person(object):
    address = 'Earth'
    def __init__(self, name):
        self.name = name

p1 = Person('Bob')
p2 = Person('Alice')

print 'Person.address = ' + Person.address

p1.address = 'China'
print 'p1.address = ' + p1.address

print 'Person.address = ' + Person.address
print 'p2.address = ' + p2.address

结果如下:

Person.address = Earth
p1.address = China
Person.address = Earth
p2.address = Earth

我们发现,在设置了  p1.address = 'China'  后,p1访问 address 确实变成了 'China',但是,Person.address和p2.address仍然是'Earch',怎么回事?

原因是 p1.address = 'China'并没有改变 Person 的 address,而是给 p1这个实例绑定了实例属性address ,对p1来说,它有一个实例属性address(值是'China'),而它所属的类Person也有一个类属性address,所以:

访问 p1.address ,优先查找实例属性,返回'China'。

访问 p2.address ,p2没有实例属性address,但是有类属性address,因此返回'Earth'。

可见,当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。

当我们把 p1 的 address 实例属性删除后,访问 p1.address 就又返回类属性的值 'Earth'了:

del p1.address
print p1.address
# => Earth

可见,千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类属性和实例属性名字冲突怎么办 的相关文章

  • 拒绝摆烂!C语言练习打卡第六天

    博客主页 小王又困了 系列专栏 每日一练 人之为学 不日近则日退 感谢大家点赞 收藏 评论 目录 一 选择题 1 第一题 2 第二题 3 第三题 4 第四题 二 编程题 1 第一题 2 第二题 前言 在前面我们学习完C语言的所以知识 当然练
  • 【华为OD机试真题 python】积木最远距离【2022 Q4

    题目描述 积木最远距离 小华和小薇一起通过玩积木游戏学习数学 他们有很多积木 每个积木块上都有一个数字 积木块上的数字可能相同 小华随机拿一些积木挨着排成一排 请小薇找到这排积木中数字相同且所处位置最远的2块积木块 计算他们的距离 小薇请你
  • Java中的反射

    Java中的反射 Java反射是指在运行时动态地获取和操作类的信息 包括类的属性 方法和构造函数等 通过反射机制 我们可以在运行时检查类的信息 并动态创建对象 调用方法和访问属性 而不需要在编译时确定类的具体信息 Java反射机制提供了以下
  • 写一本技术书籍

    作者 董伟明 链接 https zhuanlan zhihu com p 22207407 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 在过去的8个多月的时间里面 我完成了一本504页的 Python W
  • stm32f1系列 使用前需在keil配置中添加预定义符号STM32F10X_HD,USE_STDPERIPH_DRIVER

    stm32f1系列 使用前需在keil配置中添加预定义符号STM32F10X HD USE STDPERIPH DRIVER 因为在stm32系列建立底层库时 为了逻辑方便管理头文件 将库函数的头文件都放在了stm32f10x conf h
  • docker镜像(Ubuntu)安装jdk

    1 查找干净的Ubuntudocker search ubuntu2 下载镜像docker pull ubuntu3 编辑dockerfile文件 文件内容开始 FROM ubuntu latestMAINTAINER guodongADD
  • [ASP.NET MVC 小牛之路]17 - 捆绑(Bundle)

    本文介绍 MVC 4 提供的一个新特性 捆绑 Bundle 一个在 View 和 Layout 中用于组织优化浏览器请求的 CSS 和 JavaScript 文件的技术 本文目录 了解VS默认加入的脚本库 当我们创建一个基本模板的 MVC
  • 数据可视化第四章答案

    热狗大赛大胃王前三 from pyecharts import Pie import pandas as pd hotplace pd read csv hot dog places csv header None hotplace pd
  • Spring框架中的Resource接口是什么,以及它在加载和访问资源时的关键作用

    文章目录 什么是 Resource 接口 使用 Resource 加载资源 使用 Resource 访问文件系统资源 总结 个人主页 程序员 小侯 CSDN新晋作者 欢迎 点赞 评论 收藏 收录专栏 Java框架 文章内容 Resource
  • 告别枯燥,247个Python经典实战案例集合(附代码)

    今天为大家推荐一个Python从入门到进阶的实战案例合集 共计247个案例 185页内容 从此告别枯燥 60秒学会 个 例 系统学习Python 从 门到 师 所有均含有实例代码 可直接运行 感受python之美 用最短的代码实现 02 P
  • 基于STM32单片机的智能家居毕设

    文章目录 一 硬件选型 1 硬件清单 2 硬件展示 部分 二 效果展示 1 整体效果展示 2 显示屏 触摸 效果展示 三 功能分析 1 系统总体结构框图 2 主要包含的功能 四 怎么做 1 STM32单片机部分 2 语音识别与播报部分 3
  • 【JeecgBoot】点击返回关闭当前页面(tab)且返回上一层

    首先要在你需要关闭得页面组件里面加上inject closeCurrent 如下图位置 之后写一个触发函数 这里面得reBack即是返回函数
  • HTMl中的各种标签(常见)

    HTML的元素以开始标签开始 结束标签结束 被它们包起来 且一半可以嵌套 分类 html的标签主要分为双标签和单标签 双标签
  • xmL 特殊符号转换

    一共有五个 所有的特殊字符对应的编码 特殊字符 代替符号 特殊原因 amp 每一个代表符号的开头字符 gt gt 标记的结束字符 lt lt 标记的开始字符 quot 设定属性值 apos 设定属性值 代替符号都以 开始 都包含分号 以分号
  • CUDA中动态Global Memory分配和操作

    CUDA中动态Global Memory分配和操作 CUDA中动态Global Memory分配和操作 1 Heap Memory Allocation 2 Interoperability with Host Memory API 3 E
  • vue中利用自定义指令修改elementUI对话框到顶部的距离

    Vue directive alterELDialogMarginTop 修改elementUI中el dialog顶部的距离 传入值eg marginTop 5vh inserted el binding vnode el firstEl
  • python基于机器学习的姓名预测性别网页app开发

    前言 做这个项目的起因是之前csdn给我推荐了一个问答 基于机器学习的姓名预测性别的手机app开发 我点进去发现已经有人回答了 链接点进去一看 好家伙 这不是查表算概率吗 和机器学习有半毛钱关系 而且我觉得用姓名预测性别挺扯淡的 去查了一下
  • ##顺序表 编码##

    ifndef LIST H define LIST H class List public List int size List 析构函数 void ClearList 清空线性表 bool ListEmpty 判断线性表是否为空 int
  • VXLAN 大二层网络构建实战

    1 VXLAN 大二层网络 1 VXLAN背景 传统vlan可划分1 4094个子网 如果租户数量超过4094 就需要使用vxlan了 vxlan支持1670万个隔离网络通信 可以满足众多不同租户设计自己的内部网络 租户申请的云服务器来自不
  • 简单实用的数据库文档生成器

    哈喽 大家好 我是指北君 大家有没有过这样的经历 在DeadLine即将来临之际 文档尚未完成 面对纷繁复杂的数据库中各种表 视图 关联 存储过程等 你都不知道如何清晰准确的描述他们 不得不一个个打开表 视图 存储过程等查看 甚至可能因为疏

随机推荐

  • springboot自定义kafka消费者KafkaListenerContainerFactory配置说明和实验

    1 说明 实验一下 在spring boot中自行创建kafkaConsumer实例 进行消费 根据配置的不同 得出相应的结果 此例中 我使用 kafkaListenerContainerFactory自行创建了kafkaListener实
  • WSL环境中Pycharm的python控制台中报错 ModuleNotFoundError: No module named ‘xxx‘(WSL+Pycharm环境搭建系列之四)

    WSL环境中Pycharm的python控制台中报错 ModuleNotFoundError No module named xxx 0 前言 1 问题现象 2 问题分析 3 解决办法 0 前言 经过前面几次的努力 我们基本上完成了环境中的
  • 《python数据分析与应用》第四章:pandas统计分析基础

    第四章 4 1 读写不同数据源的数据 4 1 1 读 写数据库数据 1 数据库数据读取 注意 数据库的用户名 一般都是root 和密码 自己设置的 都是要用自己的 地址默认的127 0 0 1 读取函数 你自己把文件存在哪了 和存储函数 你
  • 解密蓝牙mesh系列

    转载自 蓝牙技术联盟 蓝牙mesh网络基本概念 本周跟大家分享解密蓝牙mesh系列第四篇 点这里查看第一篇 第二篇和第三篇文章 同时也是蓝牙mesh网络基本概念的第二部分 借助蓝牙mesh 您将能够创建大型网络并支持成千上万的设备之间进行安
  • css的新玩法,语法与规则

    css的新玩法 语法与规则 important 语法 Selector sRule important 说明 提升指定样式规则的应用优先权 IE6及以下浏览器有个比较显式的支持问题存在 important并不覆盖掉在同一条样式的后面的规则
  • 将Javaweb项目部署到云服务器

    一 前言 由于业务需要 要搞一个文件上传下载服务器 代码当前已经在localhost上调试成功 现在需要把这个项目部署到云服务器上 选择的服务器是vultr的vps 系统是Ubuntu16 04 二 环境准备 1 jdk安装 常规安装即可
  • [Spring][Redis]@Cacheable与redis整合时Value和Key的理解

    更新于2019年11 08 首先 多谢CHENFU ZKK同学指出我的错误 卧槽 吓我一跳 我还以为我以前学的搞错了 若不是我亲自测试一遍 差点信你了 这两天趁有空 跟踪了 Cacheable相关的源码再次确认结果如下 1 直接使用Spri
  • 华为OD机试 - 星际篮球争霸赛(Java)

    题目描述 在星球争霸篮球赛对抗赛中 最大的宇宙战队希望每个人都能拿到MVP MVP的条件是单场最高分得分获得者 可以并列所以宇宙战队决定在比赛中尽可能让更多队员上场 并且让所有得分的选手得分都相同 然而比赛过程中的每1分钟的得分都只能由某一
  • 虚拟机联网图标丢失,连不上网的问题

    虚拟机连不上网 网络图标也消失不见了 输入ifconfig 发现也不显示ens33网卡 盲猜是由于关闭虚拟机的时候 一些配置出错 导致ens33网卡没有启动成功导致的 解决办法 重新开启网卡即可 1 关闭网络服务 sudo service
  • J2EE基础之集合框架List

    前言 今天跟大家发分享的是J2EE基础之集合框架List以及JavaWeb团队项目UML 昨天自己记录了J2EE一些基础知识 希望今天分享的知识对大家有用 首先跟大家讲一下今天要分享的知识 见思维导图 一 UML 1 含义 UML建模技术是
  • 异常日志分析

    从上往下看异常信息 直到第一行是自己写的代码为止 集成第三方工具 比如百度地图 先看demo 按着demo先跑来 然后再优化 跑demo出错了 先看异常日志 解决不了百度 百度地图集成注意类冲突 慢慢来
  • 无源定位入门(三)AOA(1)

    AOA交叉测向 基本原理 以M元均匀线阵为例 设单站匀速运动 第n个时刻的位置为 静止目标 则入射角方向为 设基站上有个M元均匀线阵 相邻阵元之间的间隔为d 其中为波长 第n个时刻线阵的方位角 与X正方向的夹角 为 与XY平面的夹角为 则线
  • 如何用sql语句创建一个表(简单基础)

    使用CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表 SQL CREATE TABLE 语法 CREATE TABLE 表名称 列名称1 数据类型 列名称2 数据类型 列名称3 数据类型 例题 创建一个ac
  • SPDK详解

    一 SPDK简介及基本使用 随着硬盘 闪存技术的高速发展 NVME ssd已逐渐进入分布式存储的核心领域 伴随着NVME ssd的出现 涌现出一批新型的存储名词 包括分层存储 分级存储 冷热存储 混合存储等 而这些名词的出现 也意味着ssd
  • sql 求分位数

    1 oracle求分位数 SELECT RES3 ORG NO 5 RES3 YM X1的上四分位数 PERCENTILE CONT 0 75 WITHIN GROUP ORDER BY RES3 X1 ASC AS X1 75 X1的上中
  • IntelliJ IDEA 常用快捷键,maven依赖图,个性化设置,禁用Search Everywhere

    查看idea 中jar关系图 快捷键 Ctrl 用于注释 取消注释 Ctrl Shift F 全文搜索 Ctrl F 单页面查找 Ctrl Alt Shift L 格式化代码 CTRL N 查找类CTRL SHIFT N 查找文件CTRL
  • 理解 spring 事务传播行为与数据隔离级别

    本文是为了个人学习使用 原文章链接 https www jianshu com p 760399781b78 https blog csdn net m0 37524661 article details 84935117 注 1 事务的隔
  • vite和webpack的区别

    vite和webpack的区别 1 前言 2 Webpack 2 1 Webpack简述 2 2 Webpack常用插件 3 Vite 3 1 Vite简述 3 2 Vite插件推荐 4 区别 4 1 开发模式不同 4 2 打包效率不同 4
  • 管理中计算机系统的应用论文,浅谈计算机数据库的管理与应用论文

    浅谈计算机数据库的管理与应用论文 摘要 随着社会经济的快速发展 信息化网络技术手段不断进步 信息技术在人们日常生活 工作及学习中的广泛渗透 不仅给人们生活带来了极大便利 还极大的提升了人们工作与学习效率 为社会各领域的发展起到了巨大的推动作
  • 类属性和实例属性名字冲突怎么办

    修改类属性会导致所有实例访问到的类属性全部都受影响 但是 如果在实例变量上修改类属性会发生什么问题呢 class Person object address Earth def init self name self name name p