镇巴县 贵州省 津南区 屏边 托克逊县 麻阳 阿鲁科尔沁旗 安徽省 江门市 曲阳县 嘉黎县 陆丰市 璧山县 连城县 敦煌市 洞头县

文章导航软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:单机游戏角色扮演 → 怪物猎人世界新装备介绍 怪物猎人世界新装备新系统一览

小辣椒手机_Python __dict__属性详解

标签:雅马哈 美少女斗地主软件

我们都知道Python一切皆对象,那么Python究竟是怎么管理对象的呢?

1、无处不在的__dict__

  首先看一下类的__dict__属性和类对象的__dict__属性

# -*- coding: utf-8 -*-


class A(object):
    """
    Class A.
    """

    a = 0
    b = 1

    def __init__(self):
        self.a = 2
        self.b = 3

    def test(self):
        print "a normal func."

    @staticmethod
    def static_test(self):
        print "a static func."

    @classmethod
    def class_test(s全职法师_2018年最新新闻网elf):
        print "a calss func."


obj = A()
print A.__dict__
print obj.__dict__

  运行结果如下:

{"a": 0, "__module__": "__main__", "b": 1, "class_test": <classmetho宝葫芦的秘密_2018年最新新闻网d object at 0x00000000021882E8>, "__dict__": <attribute "__dict__" of "A" objects>, "__init__": <function __init__ at 0x00000000023A5BA8>, "test": <function test at 0x00000000023A5C18>, "__weakref__": <attribute "__weakref__" of "A" objects>, "__doc__": "
    Class A.
    ", "static_test": <staticmethod object at 0x00000000021881C8>}
{"a": 2, "b": 3}

  由此可见, 类的静态函数、类函数、普通函数、全局变量以及一些内置的属性都是放在类__dict__里的

  对象的__dict__中存储了一些self.xxx的一些东西

2、Python里什么没有__dict__属性

  虽然说一切皆对象,但对象也有不同,就好比不是每个人的女朋友都是一个人一样,一些内置的数据类型是没有__dict__属性的,如下:

num = 3
ll = []
dd = {}
print num.__dict__
print ll.__dict__
print dd.__dict__

  当我们运行这样的代码时,解释器就会告诉我们

Traceback (most recent call last):
  File "f:python	est.py", line 54, in <module>
    print num.__dict__
AttributeError: "十年一品温如言_2018年最新新闻网int" object has no attribute "__dict__"

Traceback (most recent call last):
  File "f:python	est.py", line 55, in <module>
    print ll.__dict__
AttributeError: "list" object has no attribute "__dict__"

Traceback (most recent call last):
  F末世之黑暗召唤师_2018年最新新闻网ile "f:python	est.py", line 56, in <module>
    print dd.__dict__
AttributeError: "dict" object has no attribute "__dict__"

  int, list, dict等这些常用的数据类型是没有__dict__属性的,其实这是可预料的,就算给了它们dict属性也没啥用,毕竟它们只是用来做数据容器的。

3、发生继承时候的__dict__属性

  子类有自己的__dict__, 父类也有自己的__dict__,子类的全局变量和函数放在子类的dict中,父类的放在父类dict中。

# -*- coding: utf-8 -*-


class Parent(object):
    a = 0
    b = 1

    def __init__(self):
        self.a = 2
        self.b = 3

    def p_test(self):
        pass


class Child(Parent):
    a = 4
    b = 5

    def __init__(self):
        super(Child, self).__init__()
        # self.a = 6
        # self.b = 7

    def c_test(self):
        pass

    def p_test(self):
        pass


p = Parent()
c = Child()
pri爸爸去哪儿5开播_2018年最新新闻网nt Parent.__dict__
print Child.__dict__
print p.__dict__
print c.__dict__

  运行上面的代码,结果入下:

{"a": 0, "__module__": "__main__", "b": 1, "__dict__": <attribute "__dict__" of "Parent" objects>, "p_test": <function p_test at 0x0000000002325BA8>, "__weakref__": <attribute "__weakref__" of "Parent" objects>, "__doc__": 飓风艾尔玛来袭_2018年最新新闻网None, "__init__": <function __init__ at 0x0000000002325B38>}
{"a": 4, "c_test": <function c_test at 0x0000000002325C88>, "__module__": "__main__", "b": 5, "p_test": <function p_test at 0x0000000002325CF8>, "__doc__": None, "__init__": <function __init__ at 0x0000000002325C18>}
{"a": 2, "b": 3}
{"a": 2, "b": 3}

  1)上段输出结果中,用红色字体标出的是类变量和函数,由结果可知,每个类的类变量、函数名都放在自己的__dict__中

  2) 再来看一下实力变量的__dict__中,由蓝色字体标识,父类和子类对象的__dict__是公用的

总结:

  1) 内置的数据类型没有__dict__属性

  2) 每个类有自己的__dict__属性,就算存着继承关系,父类的__dict__ 并不会影响子类的__dict__

  3) 对象也有自己的__dict__属性, 存储self.xxx 信息,父子类对象公用__dict__

当前文章:http://6zv0t7-dfkjskda-com.suanresearch.cn/46m8qy/c8360_155604.html

发布时间:2019-08-18 04:40:12

澳门银河有正规平台吗  澳门银河娱乐场yh163am.com  银河娱乐在线官方网址  919银河优越会  澳门银河真人在线娱乐  银河娱乐官网yh163am.com  银河娱乐在线官方网址  澳门银河娱乐yh163am.com  银河娱乐在线官方网址  银河娱乐手机版yh163am.com  

相关阅读 2018亚运会英雄联盟项目韩国代表队名单出炉 “世界第一上单”落选云存储供应商Box第一季度净亏损3664万美元,同比收窄苹果iOS 11.4正式版更新内容大全河北省廊坊市永清县加强农村道路交通安全管理古巴一架波音737客机坠毁 目前已致百余人遇难崇明将为上海增添最鲜亮生态特色趣味算法--自幂数突发!大理苍山发生森林火灾 正全力扑救

文章评论
发表评论

热门文章 苹果2019年iPhone XI系列全部用OLED屏?可能性较低一碗银耳莲子粥吃出满满胶原蛋白 如花美肌秘密在这里《绝地求生》1.0版本第14轮更新:改善武器投掷体验三星Galaxy A9 Star外观确认:采用竖排双摄

最新文章 古巴外交部:古巴失事飞机上没有中国人京东618手机狂欢:联想S5直降100元,诺基亚X6十点抢购 特朗普称6月举行的“特金会”或将延期一季度财报营收、净利均超预期,陌陌盘前涨近9%干一架就能解决问题 《逍遥情缘》皇城决斗走起17位院士联名呼吁营造“无网游日”

人气排行 文在寅与金正恩再次举行会晤Steam更新隐私说明:纳入欧盟《通用数据保护条例》超低端手机 成红海“避险区”投票:小米8、小米手环3、小米8 SE...你对小米发布会哪款产品最感兴趣?粉丝自製哆啦A梦动画《大雄的喜马拉雅行进记》 小伙伴们一起逛遍中国金家胜:京西矿山“补山匠”美国务卿蓬佩奥将与朝鲜高官就美朝领导人会晤进行磋商联想Moto G5S Plus升级安卓8.1:新增同屏多任务功能