声明:参考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类型(面向对象高级设计时会用到)