面向对象编程——object和type

在 Python 中,objecttype 是非常重要的概念,它们与继承和类的分层结构密切相关。

1. object 类

object 是 Python 中所有类的基类。换句话说,它是所有类的最顶层父类。在 Python 3 中,所有用户定义的类都隐式继承自 object,即使你没有显式地声明它。

示例:

class MyClass:
    pass

# 等价于:
class MyClass(object):
    pass

object 的作用:

  • 提供了许多默认的方法,例如 __str____repr____hash__ 等。

  • 确保所有类都能统一地支持基本的 Python 对象操作。

检查类是否继承 object

print(isinstance(5, object))      # True
print(isinstance("hello", object))  # True
print(isinstance(MyClass, object))  # True

2. type 类

type 是一个非常特殊的类,它有两个主要用途:

  1. 作为类型检查工具type(obj) 返回对象的类型。

  2. 作为元类type 是创建所有类的类。可以说,type 是类的类,它负责实例化新类。

示例:

class MyClass:
    pass

# 检查类的类型
print(type(MyClass))  # <class 'type'>
print(type(MyClass()))  # <class '__main__.MyClass'>

# 每个类都是 type 的实例
print(isinstance(MyClass, type))  # True
print(type(type))  # <class 'type'>,type 是自己的实例

元类的概念:

在 Python 中,类的定义是由元类负责的。type 是默认的元类。通过 type,可以动态地创建类,例如:

# 动态创建类
MyClass = type("MyClass", (object,), {"x": 5})

# 创建对象
obj = MyClass()
print(obj.x)  # 5

3. object 和 type 在继承中的关系

在 Python 中,类的层级结构通常可以通过 __bases__ 属性查看。object 是所有类的顶层父类,而 type 是所有类的元类。

示例:

print(object.__bases__)  # (),object 没有直接父类

print(type.__bases__)  # (<class 'object'>,),type 继承自 object

4. object 和 type 的方法

  • object 的方法

    • __new__:创建对象时调用的特殊方法。

    • __init__:初始化对象时调用的方法。

    • __str____repr__:定义对象的字符串表示。

  • type 的方法

    • type.__call__:当类被实例化时调用。

    • type.__init__:初始化类时调用。

5. object 和 type 的总结

  • object 是所有类的顶层父类,提供基本的对象行为。

  • type 是元类,负责创建所有类。type 本身也是一个类,并且继承自 object

6. 描述器与 object 和 type 的关系

描述器的工作原理与类的层次结构紧密相关:

  • 描述器的 __get____set____delete__ 方法会被 object 的默认行为调用。

  • 由于所有类都继承自 object,描述器的行为在所有类中都有一致的接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俊昭喜喜里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值