专栏首页python3[python]父类、子类、子类实例属性

[python]父类、子类、子类实例属性

本文旨在说明 父类、子类、子类实例的属性继承关系:

>>> A = type('A', (), {'name':1})
>>> B = type('B',(A,), {'addr':'beijing'})    #B的父类为A
>>> A.__dict__
mappingproxy({'name': 1, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None})
>>> B.__dict__
mappingproxy({'addr': 'beijing', '__module__': '__main__', '__doc__': None})
>>> b = B()
>>> b.__dict__
{}            #__dict__查看每个对象自身的属性,无法暴露继承的属性
>>> dir(b)        #dir()可以查看所有有效属性
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'addr', 'name']
>>> b.addr, b.name      #以下代码验证了:上游对象更改属性的值,下游皆会继承该值;若下游对象给属性重新赋值了,那么上游再改变属性值时对下游无影响;
('beijing', 1)
>>> A.name = 999
>>> b.name, B.name
(999, 999)
>>> A.name = 0
>>> b.name, B.name
(0, 0)
>>> B.name = 888
>>> A.name, b.name
(0, 888)
>>> A.name = 777
>>> B.name, b.name
(888, 888)
>>> b.name = 666
>>> A.name, B.name, b.name
(777, 888, 666)
>>> B.name = 555
>>> b.name
666

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【python】redis模块

    windows下载地址:https://github.com/MSOpenTech/redis/releases

    py3study
  • python PAM30 PAMIE

    安装PAM30,由于没有直接的安装文件 需要下载压缩包 然后把压缩吧解压至python/Lib/site-package/下

    py3study
  • mange

    py3study
  • Echart在Openlayers的应用-航班的炫光特效

    在前两篇文章中讲到了echart在openlayers2中的应用,地图统计图与热力图的实现,在本文中介绍openlayers中结合echart实现航班的炫光特效...

    lzugis
  • Python操作redis数据库

      redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、se...

    马一特
  • python PAM30 PAMIE

    安装PAM30,由于没有直接的安装文件 需要下载压缩包 然后把压缩吧解压至python/Lib/site-package/下

    py3study
  • 【Python基础】函数的返回

    很多时候,函数并非直接输出,相反,它可以处理一些数据,并返回一个值或者一组值,称之为返回值。

    DataScience
  • python通过配置文件共享全局变量

    在使用Python编写的应用的过程中,有时会遇到多个文件之间传递同一个全局变量的情况,此时通过配置文件定义全局变量是一个比较好的选择。

    十四君
  • Oracle通过substr,instr,translate函数的组合获取日期分割表

    写这一篇文章也是因为项目从SQL数据库导入Oracle数据库中遇到的问题,主要是我们要导入的数据有年月的分割表的查询。

    Vaccae
  • redis缓存数据库

    NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应...

    菲宇

扫码关注云+社区

领取腾讯云代金券