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

news/2024/12/22 17:00:41/

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:passstu = 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_listdef __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__魔法函数 定义之后的类变成了一个可迭代对象。


http://www.ppmy.cn/news/42212.html

相关文章

第一章节 spring 概念与体系结构

1、Spring 概念 Spring 是 Java EE 编程领域的一款轻量级的开源框架&#xff0c;目标就是要简化 Java 企业级应用程序的开发难度和周期。 1.1、广义 Spring Framework、Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security 项目名称描述Spring DataSpring…

Python 小型项目大全 56~60

五十六、质数 原文&#xff1a;http://inventwithpython.com/bigbookpython/project56.html 质数是只能被 1 和它自己整除的数。质数有各种各样的实际应用&#xff0c;但是没有算法可以预测它们&#xff1b;我们必须一次计算一个。然而&#xff0c;我们知道有无限多的质数有待发…

第二十五章 配置镜像 - 创建镜像并配置第一个故障转移成员

文章目录第二十五章 配置镜像 - 创建镜像并配置第一个故障转移成员创建镜像并配置第一个故障转移成员第二十五章 配置镜像 - 创建镜像并配置第一个故障转移成员 创建镜像并配置第一个故障转移成员 以下过程描述了如何创建镜像和配置第一个故障转移成员。 在第一个故障转移成…

Python 人工智能:21~23

原文&#xff1a;Artificial Intelligence with Python 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只关心如何…

【数据结构】- 初识数据结构之空间复杂度(下)

文章目录前言一、空间复杂度1.1空间复杂度简解1.2常见空间复杂度的计算举例二、常见复杂度的对比总结前言 将喜欢的一切留在身边 这便是努力的意义. 本章是关于初识数据结构之空间复杂度(下) 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、空间复…

【Spring Clound】Feign底层原理分析-自动装载动态代理

文章目录前言1、什么是Feign&#xff1f;2、为什么要使用Feign&#xff1f;3、Feign依赖注入原理3.1、Feign自动装载3.2、FeignClientFactoryBean#getObject4、总结前言 是一个HTTP请求调用轻量级框架&#xff0c;可以以Java接口注解的方式调用HTTP请求&#xff0c;而不用像Ja…

Linuxbrew安装及使用介绍

Linuxbrew安装及使用介绍Linuxbrew安装安装linuxbrewlinuxbrew必装包brew常用命令linuxbrew注意事项Linuxbrew安装 The Homebrew package manager for Linux 安装linuxbrew 将以下命令粘贴到命令行中运行: sh -c "$(curl -fsSL https://raw.githubusercontent.com/Lin…

走进小程序【六】微信小程序架构之【视图层】万字详解

文章目录&#x1f31f;前言&#x1f31f;小程序架构&#x1f31f;视图层 View&#x1f31f;WXML&#x1f31f;数据绑定&#x1f31f;列表渲染&#x1f31f;条件渲染&#x1f31f;模板&#x1f31f;WXSS&#x1f31f;尺寸单位&#x1f31f;样式导入&#x1f31f;内联样式&#x…