字段:
普通字段:__init__声明的字段,
静态字段:类中绑定的字段。由于实例属性比类属性高,所以类属性和实例属性不要重名
普通字段和静态字段都可以删除和修改。
装饰器:
@property: 以调用属性的方式调用方法,另外他还有setter和deleter方法。setter和deleter可以重新修改或删除带私有修饰符的字段
@staticmethod: 静态方法,不能调用类中的静态字段和类中的方法。
@classmethod: 类方法,可以调用类中的静态字段, 类中方法不能调用。
hasattr,getattr,setattr:
你可以利用hasattr检查类中的方法(对于特殊方法,除了__len__,__call__需要声明才能检查,其他的特殊方法都可以),静态字段和普通字段。
特殊变量:
__doc__属性: 模块本身是一个对象,而每个对象都会有一个__doc__属性。该属性用于描述该对象的作用。(相当于注释)
__weakref__:对一个对象的弱引用。相对于通常的引用来说,如果一个对象有一个常规的引用,它是不会被垃圾收集器销毁的,但是如果一个对象只剩下一个弱引 用,那么它可能被垃圾收集器收回。
__dict__: 对于类来说,__dict__会将其所有所有的静态字段、普通方法、声明的特殊方法(以及__doc__,__weakref__)、类方法、静态方法、属性方法返回.
对于实例来说,只返回普通字段。
__name__: 当脚本在当前文件运行时,__name__ = __main__, 当被其他脚本文件import引入时被调用执行,__name__ = 被调用的脚本文件名。
__len__: len(obj)时调用obj实例中的__len__函数,具体返回什么由自己定义(允许我们自己定制,但一般返回长度)。
__str__和__repr__: 如果把实例变为str,就要用到这两个,(请记住,类虽然有这个方法,但是没有返回值),__str__面向用户,__repr__面向程序员
__slot__:传入一个元组,限制实例的属性只能是slot传入的元祖中的(类属性不受限制,而 且动态绑定了类属性之后,实例属性也可以用),而且,动态绑定时, 同一属性在类属性和实例属性中只能出现一次。对方法也是一样。
__ getitem__: 当传入切片是会调用__getitem__,当然函数要我们自己写
__setitem__:当传入切片并且赋值时,调用setitem方法,函数也要我们自己写
__delitem__:
对比__module__, __class__, __name__:
对于实例或类而言,__Module__变量返回的是模块名(也就是文件的名字)。在本文件中返回__main__,其他文件中运行时返回文件名,如lib.test.
对于类而言,__class__返回<class ‘‘type">。对于实例对象来说,则返回<class ‘__main__.Foo‘>或者<class ‘test.lib.Foo‘>
只有类才有__name__变量,返回类名,即Foo。