版权声明:本文为博主原创文章,未经博主允许不得转载。 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、最后比较运算,比较的就是字典的内容哦