一般来说,在Python中,类实例属性的访问规则算是比较直观的。

但是,仍然存在一些不是很直观的地方,特别是对C++和Java程序员来说,更是如此。

在这里,我们需要明白以下几个地方:

1.Python是一门动态语言,任何实体都可以动态地添加或删除属性。

2.一个类定义了一个作用域。

3.类实例也引入了一个作用域,这与相应类定义的作用域不同。

4.在类实例中查找属性的时候,首先在实例自己的作用域中查找,如果没有找到,则再在类定义的作用域中查找。

5.在对类实例属性进行赋值的时候,实际上会在类实例定义的作用域中添加一个属性(如果还不存在的话),并不会影响到相应类中定义的同名属性。

下面看一个例子,加深对上述几点的理解:

class A:

cls_i = 0

cls_j = {}

def __init__(self):

self.instance_i = 0

self.instance_j = {}

在这里,我们先定义类A的一个实例a,然后再看看类A的作用域和实例a的作用域中分别有什么:

>>> a = A()

>>> a.__dict__

{'instance_j': {}, 'instance_i': 0}

>>> A.__dict__

{'__init__': , '__module__': '__main__', 'cls_i': 0, 'cls_j': {}, '__doc__': None}

我们看到,a的作用域中有instance_i和instance_j,A的作用域中有cls_i和cls_j。

我们再来看看名字查找是如何发生的:

>>> a.cls_i

0

>>> a.instance_i

0

《python怎么画心Python的类实例属性访问规则》总结了关于python基础教程,对于我们来W WW.002pc .COM确实能学到不少知识。

在查找cls_i的时候,实例a的作用域中是没有它的,却在A的作用域中找到了它;在查找instance_i的时候,直接可在a的作用域中找到它。

如果我们企图通过实例a来修改cls_i的值,那会怎样呢:

>>> a.cls_i = 1

>>> a.__dict__

{'instance_j': {}, 'cls_i': 1, 'instance_i': 0}

>>> A.__dict__

{'__init__': , '__module__': '__main__', 'cls_i': 0, 'cls_j': {}, '__doc__': None}

我们可以看到,a的作用域中多了一个cls_i属性,其值为1;同时,我们也注意到A作用域中的cls_i属性的值仍然为0;在这里,我们其实是增加了一个实例属性,并没有修改到类属性。

如果我们通过实例a操纵cls_j中的数据(注意不是cls_j本身),又会怎么样呢:

>>> a.cls_j['a'] = 'a'

>>> a.__dict__

{'instance_j': {}, 'cls_i': 1, 'instance_i': 0}

>>> A.__dict__

{'__init__': , '__module__': '__main__', 'cls_i': 0, 'cls_j': {'a': 'a'}, '__doc__': None}

我们可以看到a的作用域没有发生什么变化,但是A的作用域发生了一些变化,cls_j中的数据发生了变化。

实例的作用域发生变化,并不会影响到该类的其它实例,但是类的作用域发生变化,则会影响到该类的所有实例,包括在这之前创建的实例:

>>> A.cls_k = 0

>>> i.cls_k

0

更多:python怎么画心Python的类实例属性访问规则

https://www.002pc.comhttps://www.002pc.com/python/1558.html

你可能感兴趣的Python,实例,属性,访问,规则

linux远程主机Nginx的Rewrite规则与实例

Nginx的Rewrite规则与实例 Nginx Rewrite 规则相关指令相关指令有if,rewrite,set,return,break等,其中最关键的就是rewrite.一个简单的Nginx Rewrite

js圆形链模式JavaScript通过prototype给对象定义属性用法实例

本文实例讲述了JavaScript通过prototype给对象定义属性的用法。分享给大家供大家参考。具体分析如下:

下面的JS代码定义了movie对象。在使用对象的过程中又通过prototype给对

js正则表达式匹配任意字符串如何提高数据访问速度

hasOwnProperty()仅检索实例不检索原型,in即检索实例,又检索原型002pc.com认为此文章对《如何提高数据访问速度》说的很在理。

成员嵌套越深,访问速度越慢,只在必要的情况下使用

asp.net urlrewriter 路径.net使用自定义类属性实例

一般来说,在.net中可以使用Type.GetCustomAttributes获取类上的自定义属性,可以使用PropertyInfo.GetCustomAttributes获取属性信息上的自定义属性。

php如何访问apiphp中mkdir函数用法实例分析

本文实例分析了php中mkdir函数用法。分享给大家供大家参考。

php 模拟访问页面php实现的双向队列类实例

本文实例讲述了php实现的双向队列类及其用法,对于PHP数据结构与算法的学习有不错的参考价值。分享给大家供大家参考。具体分析如下:

(deque,全名double-ended queue)是一种具有队

肇庆php招聘php中cookie实现二级域名可访问操作的方法

本文实例讲述了php中cookie实现二级域名可访问操作的方法。分享给大家供大家参考。具体方法如下:

cookie在一些应用中很常用,假设我有一个多级域名要求可以同时访问主域名绑

访问局域网mysqlCentOS 6.5最小化编译安装mysql 5.5.35配置多实例

CentOS 6.5最小化编译安装mysql 5.5.35配置多实例1、关闭防火墙[root@mysql ~]# service iptables stop

iptables: Setting chains

菜刀phpPHP基于cookie与session统计网站访问量并输出显示的方法

本文实例讲述了PHP基于cookie与session统计网站访问量并输出显示的方法。分享给大家供大家参考,具体如下:

<?

0踩

0 赞

怎么用python画心_python怎么画心Python的类实例属性访问规则相关推荐

  1. Python的类实例属性访问规则

    一般来说,在Python中,类实例属性的访问规则算是比较直观的. 但是,仍然存在一些不是很直观的地方,特别是对C++和Java程序员来说,更是如此. 在这里,我们需要明白以下几个地方: 1.Pytho ...

  2. python解析json_python3 解析 json 字符串并返回支持属性访问的对象

    目的 将任意一个 json 字符串,转换为 python 的 object 对象,转换后支持使用属性访问. 方法 json 解析命令行使用的 argparse,可以任意规定命令行关键字,并能使用属性访 ...

  3. python创建实例属性_Python学习笔记__6.5章 实例属性和类属性

    # 这是学习廖雪峰老师python教程的学习笔记 1.概览 1.1.实例绑定属性 class Student(object): def __init__(self, name): self.name ...

  4. 海绵宝宝python代码_Python那些事——python还能这么玩?帅呆了

    当我们还是孩子的时候,总是迷恋漫画书,当翻到我们的英雄们开始行动时会激动不已. 大家总是争论谁是最厉害的超级英雄,认真地讨论他们的家族历史,或者梦想自己拯救高谭市.我们很多人用自己的童年创造了这样的难 ...

  5. 你要偷偷学Python,然后惊艳所有人(类的属性和方法)

    一.类的结构 1.1:术语--实例 1.使用面向对象开发,第一步是设计类 2.使用类名()创建对象,创建对象的动作有两步 1)在内存中为对象分配空间2)调用初始化方法__init__为对象初始化 3. ...

  6. ipad运行python爬虫_Python爬虫之UserAgent的使用实例

    问题: 在Python爬虫的过程中经常要模拟UserAgent, 因此自动生成UserAgent十分有用, 最近看到一个Python库(fake-useragent),可以随机生成各种UserAgen ...

  7. 中文分词算法python代码_python实现中文分词FMM算法实例

    本文实例讲述了python实现中文分词FMM算法.分享给大家供大家参考.具体分析如下: FMM算法的最简单思想是使用贪心算法向前找n个,如果这n个组成的词在词典中出现,就ok,如果没有出现,那么找n- ...

  8. python注释_Python头条:python基础知识了解___注释、变量、Debug

    注释 作用 通过用自己熟悉的语言,在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性. 分类与语法 单行注释 只注释一行内容,语法如下: # 注释内容 多行注释 可以注释多行内 ...

  9. pcap python 生成_python+pcap+dpkt 抓包小实例

    1 #!/usr/bin/env python 2 #-*- coding: utf-8 -*- 3 4 """网络数据包捕获与分析程序""" ...

最新文章

  1. java监听器模式使用场景_常用监听器及其应用场景
  2. 插值法补齐缺失数据_关于数据清洗的常见方式
  3. 京东购物在微信等场景下的算法应用实践
  4. PHP笔记-获取客户端IP及平台及浏览器
  5. 微信开源组件WCDB漫谈及Demo
  6. COACH与得物App达成官方合作 未来计划提供专供款商品
  7. 如何Vue项目中加载字体的最佳做法
  8. 最简单的文件加密工具(完全免费)
  9. matlab阵列方向性系数,阵列天线方向图的MATLAB实现.pdf
  10. JAVA版数字转人民币大写-四位数分隔法
  11. linux-raid (二) faulty 和 multipath
  12. Perl 中关于 LWP::UserAgent等模块用法
  13. 【python爬虫学习】cookie模拟登陆
  14. 12.3 文本查询程序
  15. 国际标准组织 ISO 3166 的国家或地区代码
  16. NNDL 实验五 前馈神经网络(2)自动梯度计算 优化问题
  17. s3 java sdk_s3javasdk文档.pdf
  18. 单字节和双字节的转换
  19. 牛逼哄哄的富士康老板郭台铭低头了,夏普将向三星供应液晶面板
  20. mt6765芯片原理图,mt6765芯片芯片资料

热门文章

  1. Windows 编程
  2. C#+SQL Server图片存取
  3. SugarCRM 在Html中增加超连接按钮
  4. python中list,tuple,str相互转换
  5. 如何注入值到Spring bean属性
  6. SQL语句中用Parameters有什么好处
  7. 浅析ASP.NET页面缓存的几点体会
  8. Java 定时任务调度(8)--ElasticJob 入门实战(ElasticJob-Lite使用)
  9. Java中BigDecimal解决精度丢失问题
  10. sysbench测试mysql性能(TPS、QPS、IOPS)(重要)