type在python是什么意思_Python type 与 __bases__

type 字面意思是类型,可以理解为模具,通过模具生成各种各样的实例。 Python中内置函数type()可以查看实例的具体类型。

什么样子的类型是type呢 ? 看看下面的例子。

>>> type(bool)

>>> type(str)>>> type(int)>>> type(list)>>> type(dict)>>> type(set)>>> type(type)

可以发现, bool,str,int,list,dict,set都是type类型,而且这些是基本类型。

看一下这些类型的实例:

>>>type(True)

>>>type(False)

>>> type(‘1234‘)

>>> type([1,2,3,4])

>>> type({1,2,3,4})

>>> type({1:‘a‘,2:‘b‘,3:‘c‘,4:‘d‘})

还有一种类型叫做class, 它也是一种模板,它的实例叫做Object。

>>> classMyObjectA(object):

...pass...>>>type(MyObjectA)

class 具有继承关系, 那它的子类又是什么类型呢 ? Python中所有的class都继承object, 那object又是什么类型呢?

>>> classMyObjectSubA(MyObjectA):

...pass...>>>type(MyObjectSubA)

>>>type(object)

看来只要是class,类型都是type。 再看看它们的实例化的对象类型

>>> my_object_a =MyObjectA()>>>type(my_object_a)

>>> my_object_sub_a =MyObjectSubA()>>>type(my_object_sub_a)

如果一个object是谁的实例,那它的类型就是谁。

再来看一看__bases__, __bases__ 也是内置函数, 用来查看class的继承关系。先看看下面多种继承的关系。

>>> classMyObjectB(object):

...pass...>>> classMyObjectC(MyObjectA, MyObjectB):

...pass...>>> MyObjectC.__bases__(, )

MyObjectC继承MyObjectA, MyObjectB. 可以看到MyObjectC的__bases__ 就是包含MyObjectA和MyObjectB的一个元组。

MyObjectA的__bases__是object, 验证下:

MyObjectA.__bases__(,)

那object的__base__是什么呢?

>>> object.__bases__()

空的元组。

type的__bases__是什么呢 ?

>>> type.__bases__(,)

object

最后,我们可以整理出一幅这样的图

20180110232708981280.png

原文地址:http://www.cnblogs.com/mypythonic/p/6883255.html

Python Directx是一种Python的图形处理库,而猴子补丁和元类则是Python语言的高级特性。 1. 猴子补丁 猴子补丁是Python语言的一种技巧,可以在运行时动态地修改类或模块的行为。通过猴子补丁,可以在不改变原有代码的情况下,为现有的类或模块添加新的方法或属性,或者修改现有的方法或属性。 例如,可以使用猴子补丁来修改Python Directx库的某个方法的行为,而不需要修改Python Directx库的原始代码。 下面是一个简单的例子,演示了如何使用猴子补丁来修改一个类的行为: ```python import some_module def monkey_patch(): some_module.SomeClass.some_method = new_method def new_method(self): print('This is the new method') monkey_patch() c = some_module.SomeClass() c.some_method() # This is the new method ``` 2. 元类 元类是Python语言的高级特性,用于控制类的创建过程。通过元类,可以在类定义时动态地修改类的行为,或者在创建类的实例时添加新的属性或方法。 例如,可以使用元类来自动为Python Directx库的所有类添加某个方法或属性。 下面是一个简单的例子,演示了如何使用元类来自动为一个类添加一个属性: ```python class MyMetaClass(type): def __new__(cls, name, bases, attrs): attrs['my_attribute'] = 42 return super().__new__(cls, name, bases, attrs) class MyClass(metaclass=MyMetaClass): pass c = MyClass() print(c.my_attribute) # 42 ``` 在上面的例子,定义了一个元类MyMetaClass,它在创建类的过程会自动为该类添加一个属性my_attribute,然后创建了一个类MyClass,并将其元类设置为MyMetaClass。当创建MyClass的实例时,该实例会继承MyClass的属性和方法,同时也会自动继承my_attribute属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值