python中的对象_python中的一切皆对象

python中一切皆对象是这个语言灵活的根本。

函数和类也是对象,属于python的一等公民。

包括代码包和模块也都是对象。

python的面向对象更加彻底。

可以赋值给一个变量

可以添加到集合对象中

可以作为参数传递给函数

可以当作函数的返回值

在python中什么不是对象?

字符串是类str的对象

数字是类int的对象

元组是类tuple的对象

列表是类list的对象

字典是类dict的对象

函数是类function的对象

类是type的对象

将一个函数当作返回值的时候就是闭包,也就是装饰器的实现原理。

在python中,基础的数据类型(list,tuple,dict等)都是使用c++编写的,所以性能会非常高。

一、type/object/class

1.type和class

>>> a = 1

>>>type(a)

>>>type(int)

>>> b = "123"

>>>type(b)

>>>type(str)

>>> c = [1,2,3]>>>type(c)

>>>type(list)

>>> d = (1,2,3)>>>type(d)

>>>type(tuple)

>>> d = {"name":"kebi","age":18}>>>type(d)

>>>type(dict)

在python中基础数据类型有:字符串、数字、元组、列表、字典、集合等

它们分别由类str、int、tuple、list、dist、set实例出来的对象。

而类str、int、tuple、list、dist、set本身也是对象,它们都是由type这个创造创造出来的。

对于函数来说:

函数都是由类function创造出来的。

>>> deffunc():

...pass...>>>type(func)

>>>type(func())

>>>type(function)

Traceback (most recent call last):

File"", line 1, in NameError: name'function' is not defined

问题:

function这个类是怎么来的了?如果function是一个对象,那么为什么不能使用type打印类型。

原因也许是function超出了type的范围,因为它不是type创造的。类似的还有NoneType

对于类来说:

类都是由type创造出来

>>> classPerson:

...pass...>>>type(Person)

>>> type(Person()) #对象由类创建

既然type创造了如此多的类,那么type是怎么来的?

>>>type(type) #自己创造自己

在python中,type有两个功能:

a.打印对象的类型

b.创造类

虽然上述代码并没有解释清楚一切对象的来源,但是很多的说明了type和class的关系——“type就是用来创造类的”

2.object

>>> print(int.__bases__)

(,)>>> print(str.__bases__)

(,)>>> print(Person.__bases__) #默认继承object

(,)>>> classAnluPerson(Person):

...pass...>>> print(AnluPerson.__bases__)

(,)

object是最顶层的基类。>>> print(type.__bases__) #type的父类是object

(,)>>> type(object) #object又是由type创造出来的

>>> print(object.__bases__)

()>>> type(type) #type自己创造自己

关于type、object、class之间的关系示意图:

1260387-20190801122606723-2072123160.png

在python中,基础数据类型的类都是type的实例,type自生也是type的实例。

基础数据类型的类都是继承object。

对于function等先不管,我们可以说一切皆对象,一切都是type的对象,object是所有类的基类。

二、python中常见的数据类型

1.None 全局只有一个

2.数值

• int

• float

• complex

• bool

3.迭代类型

4.序列类型

• list

• bytes、bytearray、memoryview(二进制序列)

• range

• tuple

• str

• array

5.映射(dict)

6.集合类型 dict与set实现原理相似,性能很高

• set

• frozenset

7.上下文管理类型(with)

8.其它

• 模块类型

• class和实例

• 函数类型

• 方法类型

• 代码类型

• object类型

• type类型

• ellipsis类型(省略号)

• notimplemented类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值