python 一张图解释清楚何为“python一切皆为对象”

一张图解释清楚何为“python一切皆为对象”

在清楚了python中类、对象、实例等之间的关系后,下面的图结合后面的代码示例,可以让你更好的理解“一切皆为对象”到底是怎么一回事。

在这里插入图片描述
总结一下几个点:

  • python中的所有的数据类型,int、float、str、list、dict、tuple等等,本身即为类,在声明变量的时候,实际是各个“数据类型”类的实例化。
  • 各个数据类型的类,又均是type类的实例对象
  • 自定义的方法和类同样也是如此,方法的创建即为function类的实例化;类的创建也可以说是由type类所完成的(实际要复杂很多,设计到元类等知识)
  • python中所有类的最终父类都是object类,包括type类
  • python中所有实例的最终类对象均是type类,包括object类,所以object类也是type类的实例对象,但是type类继承自object,相当于type类也是自己的实例对象。
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 19 10:49:11 2020

author: Irvinfaith
email: Irvinfaith@hotmail.com
"""

###### int
a = 1
print('a的类对象:', a.__class__)
print('a的父类:', a.__bases__)
print('因为a是实例对象,所以不存在继承关系')

print('int的类对象:', int.__class__)
print('int的父类:', int.__bases__)

'''
Output :
    
a的类对象: <class 'int'>
AttributeError: 'int' object has no attribute '__bases__'
因为a是实例对象,所以不存在继承关系

int的类对象: <class 'type'>
int的父类: (<class 'object'>,)
'''

###### str
b = 'a string'
print('b的类对象:', b.__class__)
print('b的父类:', b.__bases__)
print('因为b是实例对象,所以不存在继承关系')

print('str的类对象:', str.__class__)
print('str的父类:', str.__bases__)

'''
Output :
    
b的类对象: <class 'str'>
AttributeError: 'str' object has no attribute '__bases__'
因为b是实例对象,所以不存在继承关系

str的类对象: <class 'type'>
str的父类: (<class 'object'>,)
'''

###### list
c = [1, 2, 3]
print('c的类对象:', c.__class__)
print('c的父类:', c.__bases__)
print('因为c是实例对象,所以不存在继承关系')

print('list的类对象:', list.__class__)
print('list的父类:', list.__bases__)

'''
Output :
    
c的类对象: <class 'list'>
AttributeError: 'list' object has no attribute '__bases__'
因为c是实例对象,所以不存在继承关系

list的类对象: <class 'type'>
list的父类: (<class 'object'>,)
'''

###### function
def my_func():
    pass

print('my_func的类对象:', my_func.__class__)
print('my_func的父类:', my_func.__bases__)
print('因为my_func是实例对象,所以不存在继承关系')

print('function的类对象:', my_func.__class__.__class__)
print('function的父类:', my_func.__class__.__bases__)

'''
Output :
    
my_func的类对象: <class 'function'>
AttributeError: 'function' object has no attribute '__bases__'
因为my_func是实例对象,所以不存在继承关系

function的类对象: <class 'type'>
function的父类: (<class 'object'>,)
'''

###### class
'''
在python3中,创建类的时候,默认都是继承的object,所以在python3中也可以省略不写
即:
class MyClass:
    pass
和下面的创建效果是一致的
'''
class MyClass(object):
    pass


mc = MyClass()

print('myclass的类对象:', mc.__class__)
print('myclass的父类:', mc.__bases__)
print('因为myclass是实例对象,所以不存在继承关系')

print('Myclass的类对象:', MyClass.__class__)
print('Myclass的父类:', MyClass.__bases__)

'''
Output :
    
myclass的类对象: <class '__main__.MyClass'>
AttributeError: 'MyClass' object has no attribute '__bases__'
因为myclass是实例对象,所以不存在继承关系

Myclass的类对象: <class 'type'>
Myclass的父类: (<class 'object'>,)
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值