Python之__dict__

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cadi2011/article/details/86609492

0、作为object下的重要类变量__object__

1、直接上例子,两个

# -*- coding=utf-8 -*-


class Cat:

    age = 50
    def __init__(self, category, name = "cat"):
        self.name = name
        self.category = category


    def getName(self):
            return self.name

    #静态方法
    @staticmethod
    def printName(cls):
        print cls.__name__

    #类方法
    @classmethod
    def printAge(cls):
        print Cat.age

class Dog:

    def __init__(self,category):
        pass

bigCat = Cat("big kitty")

smallCat = Cat("small kitty")

cloneSmallCat = Cat("small kitty")

print bigCat.__dict__ == smallCat.__dict__ #比较的是,对象之间,实例变量、实例方法的不同哦
print "揭秘bigCat与smallCat之间为何会返回False?"
print "bigCat Instance:" + str(bigCat.__dict__) #  __dict__是object下的一个类变量
print "smallCat Instance:" + str(smallCat.__dict__)

print "\n"
print "^^^^^^^华丽丽的风割线^^^^^^^"
print "\n"

print smallCat.__dict__ == cloneSmallCat.__dict__

print "Cat:"  +  str(Cat.__dict__)
print "Dog:" + str(Dog.__dict__)


#第一、类层面的__dict__,

#第二、实例对象层面的__dict__

#__dict__是object下的类变量


输出结果:

False
揭秘bigCat与smallCat之间为何会返回False?
bigCat Instance:{'category': 'big kitty', 'name': 'cat'}
smallCat Instance:{'category': 'small kitty', 'name': 'cat'}


^^^^^^^华丽丽的风割线^^^^^^^


True
Cat:{'printAge': <classmethod object at 0x10c30abe8>, 'age': 50, '__module__': '__main__', '__doc__': None, 'printName': <staticmethod object at 0x10c30ab78>, 'getName': <function getName at 0x10c361c80>, '__init__': <function __init__ at 0x10c361b90>}
Dog:{'__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x10c361de8>}

2、总结

a、类的静态方法、类方法、普通实例方法、构造方法、全局变量以及一些内置的属性都是放在类__dict__里的

b、实例对象的__dict__中存储了一些self.xxx的一些东西

c、最后比较运算,比较的就是字典的内容哦

猜你喜欢

转载自blog.csdn.net/cadi2011/article/details/86609492