Python本人自学笔记(13) object类

本文详细介绍了Python中类的继承机制,重点讲解了object类的作用,以及特殊方法如__new__、__init__、__str__的用法。同时涵盖了如何使用dir()查看对象属性,特殊属性如__dict__、__class__等的使用,以及类的父类、子类和层次结构的查询。
摘要由CSDN通过智能技术生成

在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__())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值