python类有很多内建的属性和方法,可以通过dir查看,这些属性是系统自带的,不需要额外导入包;见下图1

这些变量都是全局变量,可以用globals()查看当前系统可用的全局变量!!!但这个和python类的内建函数不是同一个概念,见下面的代码

python全局列表 python全局类_父类

>>> globals()

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , 'a': 10, 'AA': , 'xx': {...}}

一 、python 类的特殊属性

1. __name__

if  __name__ == '__main__':这句估应该很熟悉

1:__name__是一个变量。加双下划线是因为这是一个

标识模块的系统变量

。普通变量不要使用此方式命名变量。

2:Python有很多模块,这些模块是可以独立运行的。

3:__name__   假如当前模块是主模块,那么此模块名字就是__main__,通过if判断这样就可以执行 “__mian__:” 后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字,通过if判断这样就会跳过 “__mian__:” 后面的内容。

python全局列表 python全局类_内置函数_02

这里的my是一个py文件,里面可以是类,也可以是普通函数,输出的__name__其实就是py文件的名字,而不是py文件里的类名!

2. __bases__

1. Python 为所有类都提供了一个

bases

属性,通过该属性可以查看该类的所有直接父类,该属性返回所有直接父类组成的元组。注意是直接父类!!!

2.是类的属性,不是实例化对象的属性,实例化对象没有该属性。

python全局列表 python全局类_python的特殊类_03

3.__class__

1. __class__功能和type()函数一样,都是查看对象所属的类。

2. __class__可以嵌套使用

python全局列表 python全局类_父类_04

4.__dict__

1. python 一切皆对象,对象即有__dict__,但是每个类或对象都有自己的__dict__

2. 子类继承父类的对象,父类的__dict__ 不会影响子类的__dict__;子类的的__dict__是 self变量

python全局列表 python全局类_python的特殊类_05

二、类方法

方法

功能说明

__new__()
类的静态方法,用于确定是否要创建对象
__init__()
构造方法,创建对象时自动调用
__del__()
析构方法,释放对象时自动调用
__add__()
+
__sub__()
-
__mul__()
*
__truediv__()
/
__floordiv__()
//
__mod__()
%
__pow__()
**
__eq__()、 __ne__()、__lt__()、 __le__()、__gt__()、 __ge__()
==、 !=、
>、 >=
__lshift__()、__rshift__()
<>
__and__()、__or__()、__invert__()、__xor__()
&、|、
~、^
__iadd__()、__isub__()
+=、-=,很多其他运算符也有与之对应的复合赋值运算符
__pos__()
一元运算符+,正号
__neg__()
一元运算符-,负号
__contains__ ()
与成员测试运算符in对应
__radd__()、__rsub__()
反射加法、反射减法,一般与普通加法和减法具有相同的功能,但操作数的位置或顺序相反,很多其他运算符也有与之对应的反射运算符
__abs__()
与内置函数abs()对应
__bool__()
与内置函数bool()对应,要求该方法必须返回True或False
__bytes__()
与内置函数bytes()对应
__complex__()与内置函数complex()对应,要求该方法必须返回复数__dir__()
与内置函数dir()对应
__divmod__()
与内置函数divmod()对应
__float__()
与内置函数float()对应,要求该该方法必须返回实数
__hash__()
与内置函数hash()对应
__int__()
与内置函数int()对应,要求该方法必须返回整数
__getattribute__()
获取对象指定属性的值,如果同时定义了该方法与__getattr__(),那么__getattr__()将不会被调用,除非在__getattribute__()中显式调用__getattr__()或者抛出AttributeError异常
__setattr__()
设置对象指定属性的值
__subclasses__()
返回该类的所有子类
__call__()
包含该特殊方法的类的实例可以像函数一样调用
__get__()
定义了这三个特殊方法中任何一个的类称作描述符(descriptor),描述符对象一般作为其他类的属性来使用,这三个方法分别在获取属性、修改属性值或删除属性时被调用
__set__()
__delete__()