国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > python如何实现多态

python如何实现多态

头像

爱喝马黛茶的安东尼

2019-10-29 17:55:363817浏览 · 0收藏 · 0评论

多态是指通过基类的指针或者引用,在运行时动态调用实际绑定对象函数的行为。       

对于其他如C++的语言,多态是通过在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数。

class A
{
public:
    virtual void show()
    {
        cout <<"A";
    }
};
class B:public A
{
public:
    void show()
    {
        cout << "B";
    }
};
int main()
{
    A*p = new B(); //父类指针指向子类对象
    p->show();
}

相关推荐:《Python平台

而在python中,可以这么写:

class A:
    def say(self):
        print('A')
class B:
    def say(self):
        print('B')
def say(obj):
    obj.say()
a = A()
say(a)

那么,它内部是怎么实现的呢?

首先,我们先看一下Python源码中的object.h文件的顶部注释:

在第一句里面写着,对象总是通过指针PyObject *来访问。那么什么是PyObject呢。

在Python中,所有的东西都是对象,而PyObject里面是所有对象中所拥有的相同的内容。

我们来看两个结构体:

typedef struct _object {
    _PyObject_HEAD_EXTRA
    Py_ssize_t ob_refcnt;
    struct _typeobject *ob_type;
} PyObject;
typedef struct {
    PyObject ob_base;
    Py_ssize_t ob_size; /* Number of items in variable part */
} PyVarObject;

第一个就是PyObject,而第二个,我们根据名字就可以知道这是可变的对象的结构体,包含了一个PyObject和一个所容纳元素的个数部分。

当我们创建一个对象时,分配内存进行初始化,这时候会用一个PyObject类型的指针变量来指向这块内存进行保存和维护。

就像我们声明一个整数,得到整数对象,用于指向这块内存地址的,不是PyIntObject *,而是PyObject *。

其实类型本身也是一种对象,PyTypeObject。当我们实例化一个整数对象的时候。PyIntObject的ob_type指针指向PyInt_Type,而PyInt_Type的ob_type又指向PyType_Type。而PyInt_Type和PyType_Type其实都是PyTypeObject的示例。

所以,我们在传递对象的时候,传递的是PyObject *指针这种泛型指针,我们只能通过ob_type进行判断对象类型,通过传递泛型指针的方式,实现了Python的多态。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

XO0OOXXO0OXXX后面..| 电影《满足2》完整版在线观看| 少女たちよ观看免费高清电视剧| 麻花传剧原创MV在线看完整版高.| 四管齐下4PH| 《性爽2》电影| 半夜洗澡被老头添一夜| 爸爸吃女儿奶奶高情商回复| 日本大片又大又好看的PPT| 热情的邻居2019| 真人刺激战场40分钟电视剧| WWW.YW8831.COM| 亚洲第一大综合区的就业前景| 婆媳双飞杨钰莹阅读| 公共场合高潮(H)公交车| 一家乱战1-13集大| 八戒八戒电影在线看免费观看8| 门卫秦大爷1-42章免费阅读| 《厨房韵母2》免费观看完整版| 被两个老头又日又添| 干爹你真棒插曲免费看 | 伦理《播种》| 《无法满足》意大利| 《性呻吟》伦理| 7777777亚洲和欧洲尺码表 | 欧美大片PPT免费PPT| 《从上司到妻子》动画结局| WWW.1688.COM麻豆| 男女做受A片AAAA| 口咬二十八个图片高清| 一边啃奶头一边躁狂会怎么样| 《办公室高潮秘书2》| 男生把困困放在女生定眼| 《年轻朋友的妻子3》| 三更2饺子截取一小段| 家庭性史| 亚洲XXX午休国产熟女| 丰满的女教师HD中字3D| 器材室轮-J-(1):蒙着眼在...| 《丽贝卡的秘密》| 狗配人的大片