Python中一切皆对象

声明:参考B站视频,自学成长记录
https://www.bilibili.com/video/BV1Cq4y1Q7Qv?p=3

python一切皆对象

python中一切皆对象
类和函数也是对象,都是python的一等公民

'''
python中一切皆对象
类和函数也是对象,都是python的一等公民
'''
# 1.1函数对象可以赋值给变量
def ask(name='bobby'):
    print(name)

my_func = ask
my_func()  # bobby

# 1.2类对象也可以赋值给变量
class Person():
    def __init__(self):
        print('bobby1')

my_class = Person
my_class()  # bobby1

# 2.可以添加到集合对象中
obj_list = []
obj_list.append(ask)
obj_list.append(Person)
for item in obj_list:
    print(item())
'''
结果
    bobby
    None
    bobby1
    <__main__.Person object at 0x006B5EB0>
'''

# 3.可以作为参数传递给函数
def print_type(ask):
    print(type(ask))

print_type(ask)  # <class 'function'>

# 4.可以当函数的返回值
def return_ask():
    return ask

my_ask = return_ask()
my_ask()  # bobby

type、object、class之间的关系

type --> class(类) --> obj(对象)
type 是一个类 同时也是个对象
object 是一切类的基类

'''
type -> class(类)  -> obj(对象)
'''
# 1.1 1是int类的一个实例
a = 1
print(type(a))  # <class 'int'>

# 1.2 'abc'是str类的一个实例
b = 'abc'
print(type(b))  # <class 'str'>

# 2. str、list、dict、tuple、object这些类又都是type的一个实例
print(type(int))        # <class 'type'>
print(type(str))        # <class 'type'>
print(type(dict))        # <class 'type'>
print(type(tuple))        # <class 'type'>
print(type(object))        # <class 'type'>

# 2.1 自定义类也是type的一个实例
class Student:
    pass

class MyStudent(Student):
    pass

stu = Student()
print(type(stu))    # <class '__main__.Student'>
print(type(Student))    # <class 'type'>


# 3. str、list、dict、tuple、type这些类默认都是继承object(最顶层的基类)
print(int.__base__)         # <class 'object'>
print(str.__base__)         # <class 'object'>
print(MyStudent.__base__)   # <class '__main__.Student'>
print(Student.__base__)     # <class 'object'>
print(type.__base__)        # <class 'object'>
print(object.__base__)      # None

# 4. type类也是自身的一个实例
print(type(type))           # <class 'type'>

python中常见的内置类型

# 1. 对象的三个特征 身份+类型+值
# 变量名[str1]指向值[zhangsan]的内存地址
str1 = 'zhangsan'
# 身份
print(id(str1))     # 2553771178416
# 类型
print(type(str1))   # str
# 值 就是 zhangsan

# 2. None全局只有一个
n1 = None
n2 = None
print(n1 is n2)     # True

# 3. 数值
# int
int1 = 5
# float
float1 = 5.55
# complex
complex1 = 1 + 2j
print(complex1)     # (1+2j)
# bool
bool1 = True

# 4. 迭代类型(可以用for循环遍历)

# 5. 序列类型
list1 = []          # list
range1 = range(5)   # range
str2 = 'str'        # str
tuple1 = tuple()    # tuple

from array import array
array1 = array('d')  # array

# 二进制序列
bytes1 = bytes()    # bytes
bytearray1 = bytearray('123',encoding='utf-8')    # bytearray
memoryview1 = memoryview(bytearray1)  # memoryview

# 6. 映射类型
dict1 = dict()  # dict
dict2 = {'name':'san'}

# 7. 集合
set1 = set([1,1,2,3])   # set
frozenset1 = frozenset([1,2,3,3])

# 8. 上下文管理类型
with open('1.txt','r',encoding='utf-8') as f:
    f.readlines()

# 9. 其他
# 模块类型
import time
from requests import get

# class和实例
class A:
    pass

a = A()

# 函数类型
def func():
    pass

# 方法类型(class中定义的)
class B:
    def b_func(self):
        pass

b = B()
b.b_func()

# 代码类型(会被python解释器变成一种对象类型)
# object对象
object1 = object()
# type类型
type1 = type('C',(object,),dict(name=func))
# ellipsis类型(省略类型 ... )
print(type(...))    # <class 'ellipsis'>
# notimplemented类型(面向对象高级设计时会用到)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值