前言

犹记得当初学习Python的时候,对于Python一切皆对象很是懵逼,因为Python是面向对象的动态型语言,而在函数及高阶函数的应用中,如若对于一切皆对象不是有很透彻的了解,基础不是那么牢固的话,那么对于今后的Python进阶而言,就有点拖后腿了,鉴于有朋友跟我联系说,对于一切皆对象掌握的不是太牢固,那么, 木子的本篇博客就对此知识点进行概括总结。

如有不当之处,还望各位大佬指正。

简述

长话短说,本文主要针对Python一切皆对象来讨论,主要从以下两个方面来论述:

Python的一等公民

type、object和class的关系

对于Python的常见内置类型,本篇就不做详细阐述

内置类型:

None(全局只有一个)

数值类型:int、float、complax(复数)、bool

迭代类型

序列类型:list、bytes、range、tuple、str、array

映射类型:dict

集合类型:set、frozenset

上下文管理类型:with

Python的一等公民

何为一等公民?

可以赋值给一个变量

可以添加到集合对象中

可以作为参数传递给函数

可以当做函数的返回值

针对赋值给变量及添加到集合对象中,代码予以展示:

def func(name='Python'):

print(f'the func is {name}')

class Test:

def __init__(self):

print(f'the class is {Test.__name__}')

obj_list = []

obj_list.append(func)

obj_list.append(Test)

for item in obj_list:# 添加至集合对象中

print(item())

那么上述例子,代码运行结果如下:

the func is Python# 函数func运行,打印结果

None# 函数func因没有return,返回None

the class is Test# 类Test运行,打印结果

<__main__.test object at># 类Test运行,因没有返回值,调用item(),返回类Test的对象

那么对于可以作为参数传递,以下代码展示:

def func(name='Python'):

print(f'the func is {name}')

def decorator_func():

print(f'the decorator_func is running')

return func# 返回函数func

my_test = decorator_func()

my_test('木子的三维世界')# 传递参数,调用func

上述代码运行结果如下:

the decorator_func is running

the func is 木子的三维世界

type、object和class的关系

上面的代码是演示何为Python的一等公民,那么对于为什么Python一切皆对象,想必有些道友还是有点不太懂,那么重点来了,了解完type、object和class后,木子觉得大家应该就可以彻底hold住了。

为便于理解,代码予以展示:

# 示例如下

a=2019

b="一切皆对象"

print(type(2019))

print(type(int))

print(type(b))

print(type(str))

class Student:

pass

stu = Student()

print(type(stu))

print(type(Student))

print(int.__bases__)

print(str.__bases__)

print(Student.__bases__)

print(type.__bases__)

print(object.__bases__)

print(type(object))

print(type(type))

上面代码,运行结果如下:

# 2019是由int这个类创建的实例

# int这个类是由type这个类创建的实例

# 同上

# stu是类Student创建的实例

# 类Student是由type这个类创建的实例

(,)# 类int的基类是object这个类

(,)# 同上

(,)# 同上

(,)# 重点:类type的基类也是object这个基类

()# 重点:类object没有基类

# 难点:类object是由类type创建的实例

# 难点:类type是由type类自身创建的实例

对于上面的代码,我们可以得出以下结论:

类type产生int实例,类int又有了2019这样的实例

类object是最顶层的基类

type也是一个类,同时也是一个对象

想必有些道友,看到上面的代码,已经有点懵逼了。请看下图:

对于上面图片的解读如下:

object是一切对象:list、str、dict、tuple的基类,同时object是type的实例

类type是自身的实例,同时type也继承自object类

由结论1和结论2,得出一切皆对象,同时一切皆继承自object类

总结

Python一切皆对象对于函数式编程,以及Python各种高阶用法有很大帮助。

如果哪位道友还不是很清楚,那么多看看上面的图片,没事儿多看看,多看看不坏事儿。。。好了,话又开始多了

那么想必各位道友看到这里,已经对于Python一切皆对象有了比较清的认知,后续木子会更新一篇关于Python元类的博客,今天也算是做个铺垫。

备注:为何type类可以自身的实例,有兴趣的道友可以了解下指针的概念。

时候不早了,睡觉睡觉,明天周一上班。。。

python一切皆对象 对象都有类_Python小世界:彻底搞懂Python一切皆对象!!!相关推荐

  1. python类的构造方法名称_搞懂Python的类和对象名称空间

    代码块的分类 python中分几种代码块类型,它们都有自己的作用域,或者说名称空间:文件或模块整体是一个代码块,名称空间为全局范围 函数代码块,名称空间为函数自身范围,是本地作用域,在全局范围的内层函 ...

  2. java 原型图_一张图搞懂原型、原型对象、原型链

    基本概念 在javascript中,函数可以有属性. 每个函数都有一个特殊的属性叫作原型(prototype) 每个对象拥有一个原型对象 [[Prototype]] / __proto__ / Obj ...

  3. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

  4. 五分钟学会python函数_五分钟带你搞懂python 迭代器与生成器

    前言 大家周末好,今天给大家带来的是Python当中生成器和迭代器的使用. 我当初第一次学到迭代器和生成器的时候,并没有太在意,只是觉得这是一种新的获取数据的方法.对于获取数据的方法而言,我们会一种就 ...

  5. python中gbk字符原因报错_不想再被鄙视?那就看进来! 一文搞懂 Python 2 字符编码...

    原标题:不想再被鄙视?那就看进来! 一文搞懂 Python 2 字符编码 程序员都自视清高,觉得自己是创造者,经常鄙视不太懂技术的产品或者QA.可悲的是,程序员之间也相互鄙视,程序员的鄙视链流传甚广, ...

  6. 一文搞懂 Python 的 import 机制

    一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...

  7. 怎么用Python写出随时间变化的字_面试必备 | 带你彻底搞懂 Python 生成器

    文章转载地址:面试必备 | 带你彻底搞懂 Python 生成器. 写在之前 Python 的高级语言特性一直是我们学习 Python 的一个难点,大部分人并没有做到熟练的掌握,甚至去学习它都感觉很困难 ...

  8. python协程详解_彻底搞懂python协程-第一篇(关键词1-4)

    任何复杂的概念或系统都不是凭空出现的,我们完全可以找到它的演化历程,寻根究底终会发现,其都是在一系列并不那么复杂的简单组件上发展演化而来! by 落花僧 本文通过一系列关键概念,逐步递进理解协程. 0 ...

  9. 面试系列 | 带你彻底搞懂 Python 装饰器

    本文作者:Rocky0249 公众号:Python空间 写在之前 「装饰器」作为 Python 高级语言特性中的重要部分,是修改函数的一种超级便捷的方式,适当使用能够有效提高代码的可读性和可维护性,非 ...

最新文章

  1. 惊呆了!两人发现抵用券漏洞,疯狂“薅羊毛”获利 770 余万
  2. c java 开发android_java代码与纯C代码混编完成android应用的开发
  3. 工程项目管理丁士昭第二版_2021年软考系统集成项目管理工程师知识点预习第十四章第二节...
  4. 从茶叶蛋到互联网思维
  5. WinAPI: Ellipse - 绘制椭圆
  6. leetcode1414. 和为 K 的最少斐波那契数字数目(贪心算法)
  7. PHP开发人员常犯的10个MysqL错误
  8. SCOM2012部署系列之十三:监控Exchange server 2013 RTM
  9. Linux查看kvm安装路径,Linux系统KVM虚拟化自动部署
  10. 【转】sql语句优化工具LECCO SQL Expert
  11. 如何在 Mac 上创建自动填充的智能文件夹?
  12. VM虚拟机,Linux系统安装tools过程遇到 what is the location of the “ifconfig” program
  13. windows 8授权概览
  14. python图片表格转excel表格_Python办公自动化 | word 表格转excel
  15. 工具系列 | FPM进程管理器详解
  16. bzoj 3772: 精神污染 (主席树+dfs序)
  17. android app 马甲包,关于Android多渠道打包和马甲包问题
  18. 王欣复出后的第一款产品
  19. OpenAI 强化学习 SpiningUP 中文文档 中文教程
  20. 专访三维力控科解读实时数据库的发展

热门文章

  1. iOS直播实用篇(手把手教)
  2. 微信小程序 # 轮播图swiper滑动到最后一页进行页面跳转
  3. css去除图片或元素的背景颜色【透明】
  4. 一种实现人工智能程序自进化的概念原理
  5. kotlin(java) 文件压缩
  6. Unity 动态改变Text字体颜色
  7. html5 驾考 答题样式,驾考科目一答题规律
  8. python自动化框架:pywinauto实现博客之星自动化评论
  9. go-kit入门指南
  10. 蓝牙进阶之路 (003) - AT指令(转)