欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 类的特殊属性和方法

程序员文章站 2022-05-07 21:44:26
...
  • python类有很多内建的属性和方法,可以通过dir查看,这些属性是系统自带的,不需要额外导入包;见下图1
  • 这些变量都是全局变量,可以用globals()查看当前系统可用的全局变量!!!但这个和python类的内建函数不是同一个概念,见下面的代码

python 类的特殊属性和方法

 

>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 10, 'AA': <class '__main__.AA'>, 'xx': {...}}

 

一 、python 类的特殊属性

1. __name__

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

1:__name__是一个变量。加双下划线是因为这是一个标识模块的系统变量。普通变量不要使用此方式命名变量。

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

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

 

python 类的特殊属性和方法

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

2. __bases__

1. Python 为所有类都提供了一个 bases 属性,通过该属性可以查看该类的所有直接父类,该属性返回所有直接父类组成的元组。注意是直接父类!!!

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

python 类的特殊属性和方法

3.__class__

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

2. __class__可以嵌套使用

python 类的特殊属性和方法

 4.__dict__

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

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

python 类的特殊属性和方法

二、类方法

方法

功能说明

__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__()