Python学习心得特殊方法

一、特殊方法:

 python当中一切皆对象。这也就说我们可以将其看成对象去调用对应类的特殊方法,去编写程序,从而代替某些运算符的使用。

1.特殊方法:

运算符

特殊方法

功能描述

+

__add__()

执行加法运算

-

__sub__()

执行减法运算

<, <=, ==

__lt__(), __le__(), __eq__()

执行比较运算

>, >=, !=

__gt__(), __ge__(), __ne__()

执行比较运算

*, /

__mul__(), __truediv__()

执行乘法运算,非整除运算

%, //

__mod__(), __floordiv__()

执行取余运算,整除运算

**

__pow__()

执行幂运算

2. 特殊方法的应用:

a=10
b=20

print(dir(a)) # Python 中一切皆对象
print(a+b) # 执行加法运算
print(a.__add__(b))
print(a.__sub__(b)) # 执行减法运算
print(f'{a}<{b}吗? ',a.__lt__(b))
print(f'{a}<{b}吗? ',a.__le__(b))
print(f'{a}=={b}吗?',a.__eq__(b))
print('-'*40)
print(f'{a}>{b}吗?',a.__gt__(b))
print(f'{a}>={b}吗?',a.__ge__(b))
print(f'{a}!={b}吗?',a.__ne__(b))

#
print('-'*40)
print(a.__mul__(b)) # 乘法
#
print('-'*40)
print(a.__mul__(b)) # 乘法
print(a.__truediv__(b)) #除法
print(a.__mod__(b)) # 取余
print(a.__floordiv__(b)) # 整除
print(a.__pow__(2))

二、特殊属性 

1.特殊的属性:

特殊属性

功能描述

obj_dict

对象的属性字典

obj_class

对象所属的类

class_bases

类的父类元组

class_base

类的父类

class.mro

类的层次结构

class_subclasses_0

类的子类别表

 注:为什么是class_bases 父类的元组呢,因为可能父类不只一个。

2. 特殊属性的使用:

class A:
    pass

class B:
    pass

class C(A,B):
    def __init__(self,name,age):
        self.name=name
        self.age=age

# 创建类的对象
a=A()
b=B()

# 创建C类的对象
c=C('陈梅梅', 20)

print('对象的属性字典:',a.__dict__) # 对象的属性字典
print('对象的属性字典:',b.__dict__)
print('对象的属性字典:',c.__dict__)

print('对象a所属的类:',a.__class__)
print('对象b所属的类:',b.__class__)
print('对象c所属的类:',c.__class__)

print('A类的父类元组',A.__bases__)
print('A类的父类元组',B.__bases__)
print('A类的父类元组',C.__bases__)#object是爷爷类

print('A类的父类',A.__base__)
print('A类的父类',B.__base__)
print('A类的父类',C.__base__)#A类,如果有多个父类只显示第一个父类,object类是爷爷类

print('A类的层次结构',A.__mro__)#层次说的是都继承了谁,也算上自己
print('B类的层次结构',B.__mro__)
print('C类的层次结构',C.__mro__)

print('A类的子类列表',A.__subclasses__())#A的子类有C类
print('B类的子类列表',B.__subclasses__())
print('C类的子类列表',C.__subclasses__())#[]

你可能感兴趣的:(python,开发语言,pycharm,前端)