`
小鸡啄米
  • 浏览: 38775 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

python面向对象-理清object与type的关系

阅读更多

一  Python中一切都是对象。 

既然python所有的一切都是对象,那么从另一个角度去对待python中的面向对象---没有传统的类型,只有对象,类型也是对象。

那么又怎么去判断哪个是类型哪个是实在的对象呢?

python中有两类对象,一类就是type,一类就是实例对象,通过'class'语句来创建类型(type)对象(传统的定义一个类),通过'()'来创建普通的非类型对象。

用'class'语句来创建一个类型对象,免不了又要掉到传统的类型中去,再讲一个秘密:

python如何实例化对象?

通过使用type对象的__new__方法和__init__方法来创建和初始化对象,感觉上而言类型像是一个工厂来生产对象。

测试一下:

#定义一个list对象,不可继承

>>> a = list.__new__(list)

类型也是这样生产出来的..

#定义一个Student类型对象,可继承

>>> Student = type.__new__(type, 'Student', (), {})

既然类型对象都是这样构造出来的,那就有理由相信所有的类型对象都是type类型的实例(默认情况下type是类型的'元类'(这个词很唬人),其实就是工厂形式的东西)。

>>> list

<type 'list'>

>>> list.__class__

(<type 'type'>)

*type对象是系统本身存在的。它也可以看作是它自身的一个实例,一种获取别的对象的类型的方式。python中是通过__class__属性来标志是否是某个类型的实例。


二 object和type对象的关系

>>> object.__class__

<type 'type'>

>>> type.__class__

<type 'type'>

>>> object.__bases__

()

>>> type.__bases__

(<type 'object'>,)


这几句语句包含了三个概念1.对象 2.继承 3.类型

__class__属性指的是该对象是什么类型的实例。

__bases__属性指的是该对象的类型的父类有哪些。

首先,在python中一切都是对象,包括object和type,

*(object和type对象是系统的原有值,python中本身存在的,我的理解是c创建的一个struct对象)。

第二,object是一切对象的基类,所有其他类型都是从该类型中继承而来的。

第三,object作为一个对象它是type类型的一个实例。

第四,type作为类型它继承自object类型。




 

0
0
分享到:
评论

相关推荐

    python程序设计基础-PPT课件;自己授课整理的ppt

    python程序设计-第一章-基础知识.pptx" ...python程序设计-第六章-面向对象-基础.ppt python程序设计-第七章-面对对象-进阶.pptx" python程序设计-第八章-面向对象-高级 python程序设计-Pycharm使用技巧

    Python-3-Object-Oriented-Programming-Third-Edition:Packt发行的《 Python 3面向对象编程》第三版

    Python 3面向对象编程-第三版 这是Packt发布的的代码存储库。 在Python 3.8中使用面向对象的设计模式构建健壮且可维护的软件 这本书是关于什么的? 面向对象编程(OOP)是一种流行的设计范例,其中数据和行为以...

    python面向对象练习题.pdf

    ### Python面向对象编程知识点解析 #### 一、面向对象三大特性及作用 **1. 封装** 封装是面向对象编程中的一个重要概念,它通过隐藏类的内部细节并对外提供公共接口来保护数据的安全性和完整性。封装使得类的使用...

    python面向对象课件

    面向对象编程(Object-Oriented Programming,简称OOP)是Python编程中的核心概念之一,它是一种编程范式,强调通过创建对象来组织代码,使得程序更易于理解和维护。本课件详细介绍了Python中的面向对象特性,包括类...

    python_docx-0.8.10-py2.py3-none-any.whl

    原来是通过命令行下载的docx安装包还没有完全兼容python3,估计这个安装包还只兼容python 2(python2 和python3差别还是挺大的,虽然现在python 3出来很久了,但是不少三方库还没有更新),因此需要自己找一个兼容的包...

    python-3.6.4-amd64.exe

    python-3.6.4-amd64.exe。Python [1] (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。...

    python程序设计基础-PPT课件.zip 包括了学习的源代码

    python程序设计-第一章-基础知识.pptx" ...python程序设计-第六章-面向对象-基础.ppt python程序设计-第七章-面对对象-进阶.pptx" python程序设计-第八章-面向对象-高级 python程序设计-Pycharm使用技巧

    Python 3 Object-Oriented Programming, 2nd Edition

    - **核心概念**:本书主要聚焦于Python 3版本下的面向对象编程(Object-Oriented Programming, OOP)技术。 - **适用对象**:适合对Python有一定了解、希望进一步掌握其面向对象编程特性的开发人员。 - **出版信息**...

    Python 面向对象(基础篇).pdf

    Python面向对象编程基础篇 Python面向对象是指一种编程思想和方法,它强调将问题域中的对象和概念抽象化,定义类和对象,并使用它们来描述和解决问题。Python面向对象编程是一种编程思想和方法,它强调将问题域中的...

    Python库 | python-jsonpath-object-transform-0.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:python-jsonpath-object-transform-0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python-2.7.5-90.el7.x86_64.rpm

    python-2.7.5-90.el7.x86_64.rpm

    python-iniparse-0.3.1-2.1.el6.noarch.rpm

    python-iniparse-0.3.1-2.1.el6.noarch.rpm

    Python 3 Object-oriented Programming

    标题《Python 3面向对象编程》指出了本书探讨的主题,它关注于Python 3这个版本中的面向对象编程范式。面向对象编程(Object-oriented programming,简称OOP)是一种编程范式,它使用“对象”来设计软件。对象可以...

    2014年度辛星python面向对象教程

    面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计软件。对象可以包含数据,即属性(以键值对的形式),以及代码,即方法(函数)。面向对象编程的主要思想包括封装、继承...

    python面向对象练习-三角形

    python面向对象练习-三角形

    Python 3 Object-Oriented Programming, Second Edition.pdf

    本书《Python 3 Object-Oriented Programming, Second Edition》是一本专门介绍Python 3面向对象编程的书籍。从标题和描述中,我们可以提炼出以下知识点: 1. Python 3编程语言:本书专注于Python语言的第三个主要...

    Python 面向对象编程指南 new

    在Python的世界里,面向对象编程(Object-Oriented Programming, OOP)是核心编程范式之一,它允许我们将复杂的问题拆解为一系列可复用的对象,极大地提高了代码的可维护性和可扩展性。《Python面向对象编程指南》这...

    Python 3面向对象编程

    Python 是一种面向对象的解释型语言,面向对象是其非常重要的特性。《Python 3面向对象编程》通过Python 的数据结构、语法、设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念...

    Python学习--面向对象思维导图

    Python学习--异常处理思维导图!!来源于网易云课堂王顺子

Global site tag (gtag.js) - Google Analytics