类,对象,实例

类,对象,实例

之前一直将对象和实例区分不清楚,最近思考了下,整理如下


类—实例化—>对象

实例是相对于某一个具体类的概念,a对象是B类的实例。

类是对象的集合(抽象)
类实例化为对象,因此所谓的实例是相对类而言的,并不能说tom是实例,而是tom是Student类的实例。
但我们可以说tom是一个对象。

为什么说python中一切皆对象

函数是function类的实例化对象

>>> def fun1():
...     pass
... 
>>> type(fun1)
<class 'function'>
>>> type(type(fun1))
<class 'type'>

通过type(fun1)可以看出,函数是function类的实例,而function类又是type元类的实例。
所以从这个角度看,函数也是类的实例,也是对象,因此某种意义上可以说,除了type元类以外,一切皆对象。
甚至包括import 一个模块,这个模块都是一个module类的一个实例,比如一个自建的models模块

>>> type(models)
<class 'module'>

以此推断,其实python package被导入后,在运行时也是一个对象,以test_app包为例:

>>> import test_app
>>> type(test_app)
<class 'module'>
>>> for i in test_app.__dict__:
...     print(i)
... 
__name__
__doc__
__package__
__loader__
__spec__
__path__
__file__
__cached__
__builtins__
apps
models
admin

可以看到,test_app包也是一个module类的实例对象,或许python包要求__init__文件,也就是包在初始化为对象时首先执行的,有点像类的实例方法__init__。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值