在Python当中,如果一个类没有继承任何类,那么这个类默认继承的就是object类,所以
- object类是所有类的直接或间接父类
- 所有类都拥有object类的属性和方法
| object类中特殊的方法 | 功能描述 |
| __new__() | 有系统调用,用于创建对象 |
| __init__() | 创建对象是手动调用,用于初始化对象的属性值 |
| __str__() | 对象的描述,返回值是str类型,默认输出对象的内存地址。 |
使用 dir() 查看对象的所有属性
class Person(object):#创建类
def __init__(self,name,age):#初始化方法
self.name = name#实例属性赋值
self.age = age
def show(self):#创建函数
print(f'大家好,我叫{self.name},我今年{self.age}岁了')
#创建Person类的对象
per=Person('Sam','15')#创建对象的时候会自动调用__init__方法
print(dir(per))#使用dir查看Person类对象per所具有的属性
红色框框里面的是我们自己定义的属性和方法,没有框起来的是来自继承父类 object 的属性或方法
特殊方法
| 运算符 | 特殊方法 | 功能描述 |
| + | __add__() | 执行加法运算 |
| - | __sub__() | 执行减法运算 |
| < , <= , == | __lt__() , __le__() , __eq__() | 执行比较运算 |
| > , >= , != | __gt__() , __ge__() , __ne__() | 执行比较运算 |
| * , / | __mul__() , __truediv__() | 执行乘法运算,非整除运算 |
| % , // | __mod__() , __floordiv__() | 执行取余运算,整除运算 |
| ** | __pow__() | 执行幂运算 |
举例:
a=10
b=20
print(a.__add__(b))
print(a.__sub__(b))
print('a<b',a.__lt__(b))
print('a<=b',a.__le__(b))
特殊属性
| 特殊属性 | 功能描述 |
| obj.__dict__ | 对象的属性字典 |
| obj.__class__ | 对象所属的类 |
| class.__bases__ | 类的父类元组 |
| class.__base__ | 类的父类 |
| class.__mro__ | 类的层次结构 |
| class.__subclasses__() | 类的子类列表 |
举例:
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('sam',15)
#查对象的属性字典
print('a的属性字典',a.__dict__)
print('b的属性字典',b.__dict__)
print('c的属性字典',c.__dict__)
print('*'*50)
#查对象所属的类
print('a所属的类',a.__class__)
print('b所属的类',b.__class__)
print('c所属的类',c.__class__)
print('*'*50)
#查类的父类元组
print('A的父类元组',A.__bases__)
print('B的父类元组',B.__bases__)
print('C的父类元组',C.__bases__)
print('*'*50)
#查类的父类
print('A的父类',A.__base__)
print('B的父类',B.__base__)
print('C的父类',C.__base__)#如果父类有很多就只显示第一个父类
print('*'*50)
#查类的层次结构
print('A',A.__mro__)
print('B',B.__mro__)
print('C',C.__mro__)
print('*'*50)
#获取类的子类列表
print('A',A.__subclasses__())
print('B',B.__subclasses__())
print('C',C.__subclasses__())
本文详细介绍了Python中类的继承机制,重点讲解了object类的作用,以及特殊方法如__new__、__init__、__str__的用法。同时涵盖了如何使用dir()查看对象属性,特殊属性如__dict__、__class__等的使用,以及类的父类、子类和层次结构的查询。
6810

被折叠的 条评论
为什么被折叠?



