0.object类源码
class object:
""" The most base type """
def __delattr__(self, *args, **kwargs): # real signature unknown
""" Implement delattr(self, name). """
pass
def __dir__(self): # real signature unknown; restored from __doc__
"""
__dir__() -> list
default dir() implementation
"""
return []
def __eq__(self, *args, **kwargs): # real signature unknown
""" Return self==value. """
pass
def __format__(self, *args, **kwargs): # real signature unknown
""" default object formatter """
pass
def __getattribute__(self, *args, **kwargs): # real signature unknown
""" Return getattr(self, name). """
pass
def __ge__(self, *args, **kwargs): # real signature unknown
""" Return self>=value. """
pass
def __gt__(self, *args, **kwargs): # real signature unknown
""" Return self>value. """
pass
def __hash__(self, *args, **kwargs): # real signature unknown
""" Return hash(self). """
pass
def __init_subclass__(self, *args, **kwargs): # real signature unknown
"""
This method is called when a class is subclassed.
The default implementation does nothing. It may be
overridden to extend subclasses.
"""
pass
def __init__(self): # known special case of object.__init__
""" Initialize self. See help(type(self)) for accurate signature. """
pass
def __le__(self, *args, **kwargs): # real signature unknown
""" Return self<=value. """
pass
def __lt__(self, *args, **kwargs): # real signature unknown
""" Return self<value. """
pass
@staticmethod # known case of __new__
def __new__(cls, *more): # known special case of object.__new__
""" Create and return a new object. See help(type) for accurate signature. """
pass
def __ne__(self, *args, **kwargs): # real signature unknown
""" Return self!=value. """
pass
def __reduce_ex__(self, *args, **kwargs): # real signature unknown
""" helper for pickle """
pass
def __reduce__(self, *args, **kwargs): # real signature unknown
""" helper for pickle """
pass
def __repr__(self, *args, **kwargs): # real signature unknown
""" Return repr(self). """
pass
def __setattr__(self, *args, **kwargs): # real signature unknown
""" Implement setattr(self, name, value). """
pass
def __sizeof__(self): # real signature unknown; restored from __doc__
"""
__sizeof__() -> int
size of object in memory, in bytes
"""
return 0
def __str__(self, *args, **kwargs): # real signature unknown
""" Return str(self). """
pass
@classmethod # known case
def __subclasshook__(cls, subclass): # known special case of object.__subclasshook__
"""
Abstract classes can override this to customize issubclass().
This is invoked early on by abc.ABCMeta.__subclasscheck__().
It should return True, False or NotImplemented. If it returns
NotImplemented, the normal algorithm is used. Otherwise, it
overrides the normal algorithm (and the outcome is cached).
"""
pass
__class__ = None # (!) forward: type, real value is ''
__dict__ = {}
__doc__ = ''
__module__ = ''
1.常用内置属性说明
①__class__:说明对象处于哪一个模块中的哪一个类
②[类名].__dict__:打印类的所有属性与方法(包括继承自基类的属性和方法)(包括内置属性和方法)
[对象].__dict__:打印对象的所有属性(私有和公有)
③[类名].__doc__:打印类的注释
④[对象].__module__:打印对象所在模块
myTime.py
import time
class MyTime(object):
at = "MyTime Class"
def now_time(self):
print(time.time())
main.py
from myTime import MyTime
class Cat(object):
"""这是一个猫类"""
ac = "Cat class"
def __init__(self, name, count):
self.name = name
self.__count = count
def tell(self):
print(self.name)
class Dog(Cat):
ad = "Dog Class"
def __init__(self, name, count, sex):
super(Dog, self).__init__(name, count)
self.sex = sex
def haha(self):
print("Dog haha")
if "__main__" == __name__:
c = Cat("miao", 12)
d = Dog("xiaogou", 12, "female")
t = MyTime()
print(c.__class__) # <class '__main__.Cat'>
print(t.__class__) # <class 'myTime.MyTime'>
print(Cat.__dict__)
print(d.__dict__)
print(c.__doc__) # 这是一个猫类
print(d.__doc__) # None
print(c.__module__) # __main__
print(d.__module__) # __main__
print(t.__module__) # myTime
3.内置方法说明
①__new__:在__init__函数之前执行,创建并返回一个新的对象。利用这个方法和类属性的特性可以实现设计模式中的单例模式。
class SingleItem(object):
__instance = None
def __init__(self):
print("__init__")
def __new__(cls, *args, **kwargs):
print("__new__")
if cls.__instance == None:
cls.__instance = object.__new__(cls, *args, *kwargs)
return cls.__instance
def show(self):
print(self.__instance)
if "__main__" == __name__:
s1 = SingleItem()
s1.show() # <__main__.SingleItem object at 0x000001A309BD7E48>
s2 = SingleItem()
s2.show() # <__main__.SingleItem object at 0x000001A309BD7E48>
②__str__: 在使用print语句时被调用。
class Test(object):
__name = "__name"
__age = "__age"
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return self.__name
if "__main__" == __name__:
s1 = Test("maxin", 23)
print(s1)
print(str(s1))
③__call__: 将实例对象作为函数调用(也就是需要加())
class Fruit(object):
class Growth(object):
def __call__(self, *args, **kwargs):
print("growth...")
growth = Growth()
if "__main__" == __name__:
f1 = Fruit()
f1.growth()
Fruit.growth()
④__getitem,__setitem,__delitem: 将类封装成一个字典的形式
class Person(object):
def __init__(self, name):
self.name = name
self.dict = {}
def __getitem__(self, item):
if item in self.dict:
return self.dict[item]
else:
return None
def __setitem__(self, key, value):
self.dict[key] = value
def __delitem__(self, key):
print("__delitem__")
if "__main__" == __name__:
p1 = Person("maxin")
print(p1["age"])
p1["age"] = 23
print(p1["age"])
del p1["age"] # __delitem__
print(p1["age"])