Python高级编程 type、object、class的区别 python中常见的内置类型 魔法函数

python中一切皆对象

代码块:

a = 1
print(type(a))
print(type(int))

控制台输出:

<class 'int'>
<class 'type'>

也就是说在python中int类是由type类生成的,而数字1是由int类生成的。

代码块:

b = "abc"
print(type(b))
print(type(str))

控制台输出:

<class 'str'>
<class 'type'>

同理str类也是type类生成的 ,字符串"abc"是由str生成的。

class Student:
    pass

stu = Student()
print(type(stu))
print(type(Student))

输出为:

<class '__main__.Student'>
<class 'type'>

说明自定义Student类也是由type类生成的。

object类

obj类是所有类都继承的最顶层的类(基类)
注意:type也是一个类,同时type也是一个对象

print(type.__base__)
print(type(object))

输出:

<class 'object'>
<class 'type'>

也就是说type和object互为对方的指针,type类是object的实例化,object是type的继承。

在这里插入图片描述

对象的三个特征

  • 身份(id)
  • 类型

python中常见的内置类型

None(全局只有一个)

python解释器启动时会自动生成一个None对象(全局唯一一个)

a = None
b = None
print(id(a),id(b))
140717902960768 140717902960768

可以发现a和b二者的id是一样的,说明它们指向的是同一个地址,侧面证明了None类型是全局只有一个的类型。

数值类型

  • int
  • float
  • complex
  • bool

映射(dict)

对象会将 不可变的值 映射到任意对象。 映射属于可变对象。 目前仅有一种标准映射类型 字典

集合

  • set
  • frozenset

上下文管理器类型(with)

上下文管理器就是实现了上下文管理协议的对象。主要用于保存和恢复各种全局状态,关闭文件等,上下文管理器本身就是一种装饰器。

序列类型

  • list
  • bytes
  • range
  • tuple
  • str
  • array

其他

模块类型、class和实例、函数类型、方法类型、代码类型、object对象、type类型、type类型…

魔法函数

什么是魔法函数

python里定义的以双下划线开头和结尾的函数叫做魔法函数

class Company(object):
    def __init__(self,employee_list):
        self.employee = employee_list

    def __getitem__(self, item):
        return self.employee[item]

company = Company(['tom','bob','xiaoming'])
for i in company:
    print(i)
tom
bob
xiaoming

当for循环遍历company对象的时候,会自动去寻找构成这个对象的类中的__getitem__魔法函数

python中的数据模型以及数据模型对python语法的影响

数据模型其实就是魔法函数。因为我们定义了一些声明了它的定义的数据模型就会用神奇的功能。比如上文中__getitem__魔法函数 定义之后的类变成了一个可迭代对象。

猜你喜欢

转载自blog.csdn.net/fuhao6363/article/details/129970023