从0.1开始学Python——[17]

    • isinstance()函数
    • 类的本质
    • 用类创建对象的流程

之前我们学习了对象(object),即内存中专门用来储存数据的一块区域。面向对象(OOP),意思是所有操作都是围绕或者说通过对象完成的,而Python中“一切皆对象”,因此Python是一门面向对象的编程语言。和面向对象相对,另一种编程语言叫面向过程的编程语言,即将程序的逻辑分解为步骤,然后对步骤的抽象来完成程序。
面向过程编程的逻辑比较直接,就和我们想问题差不多,但是却有比较不方便的地方。面向过程的弊端在于,每个程序都是由一个个步骤组成的,而这些步骤只为一个功能实现,那只要其他功能和这个功能有一点点不同,即便是有一两个步骤不一样,这样也不能通用,也就是说它的可复用性比较低。适合只用一两次的功能。
面向对象编程的主要关注点是对象,而不是过程。说白了就是功能存入对象,该啥时候用啥时候用就行,这大概就是面向对象的中心思想。和面向过程相比,可以看作每一些步骤就属于一个对象,当需要完成的功能是几个对象的功能拼凑起来的时候,就使用这几个对象就行了,来回嵌套或拼接即可。写对象比较麻烦,但是复用性强。而且改对象的效果直接可以同时对所有用到该对象的东地方生效,所以也易于维护。面向对象编程的步骤可以概括为:找到对应对象->使用对象的功能。

除了Python内置的对象之外,我们写程序也非常需要一些自定义的对象帮我们实现更复杂或特等的功能,所以才有自定义对象这种东西。类(class),更像是图纸一样,这个东西是创建对象的蓝本,是创建对象依据,描绘了对象的“宏观样子”。这种相对关系之下,对象也可以说是类的实例(instance)。要注意的是,一个类可以创建很多不同的对象,但是这些对象属于同一类,就像字符串,写成什么样都有可能,但是都是字符串;就像大家都是人,但是都长得不一样(当然也有贼像的,但是不完全一样)。 不过注意,自定义的类都需要大写字母开头,这和内置的就不一样。用class定义类的语法和函数类似,但不一样,具体为:
class 类名([父类]可不写):
(缩进)代码块

调用类的方式和调用函数比较相似,只不过一般都把调用类的指令赋值给一个变量,因为你创建类的目的就是创建这个类的变量

class Jntm():passprint(Jntm)
kk = Jntm()
print(kk)
print(type(kk))
<class '__main__.Jntm'>
<__main__.jntm object at 0x000002D594DE94C8>
<class '__main__.Jntm'>

可以看到,上面是我们创建的类,而下面就变成了对象,而这个对象就属于类Jntm。

isinstance()函数

这个函数是用来检测某对象是否属于某类的,输入参数是isinstance(对象,类名),返回值是布尔值True或False。

r = isinstance(kk,Jntm)
r1 = isinstance(kk,int)print(r)
print(r1)
True
False

类的本质

本质上来讲,类是对象,是一个用来创建对象的对象。类的类型就是type,也就是说定义一个类就是定义了一个type类的对象。

print(type(10))
print(type(Jntm))
<class 'int'>
<class 'type'>

用类创建对象的流程

变量的类型和创建他的一致,注意不是和类的类型一致是和类一致,因为所有类的类型都是type,但是对象的类型很丰富。

print(type(10))
print(type(int))
<class 'int'>
<class 'type'>

创建变量10的类就是int,而不是int的类型是int,int类的类型是type。用类创建对象的流程可以简单概括为:创建一个变量;在内存中创建一个新对象;将对象的id赋值给变量。在上面创建的对象kk,就是一个被赋予唯一id,类型为Jntm,而值是空(注意不是None)的变量。由于值是空的,所以现在kk是一个空对象,但是又不会写类的内容,那么在充实类的内容之前,我们可以先在对象里面添加变量,或者说在这个变量里面添加变量,这个添加进去的对象叫属性。基本语法是:对象.属性名=属性值。效果是改变对象里面值(value)的内容。

kk.skill = '唱跳rap篮球'
print(kk.skill)
唱跳rap篮球

这个时候相当于kk对象的value里面多了一个skill='唱跳rap篮球’的内容,注意**skill=‘唱跳rap篮球’**是完整内容,而不是只有’唱跳rap篮球’是。当然,如果Jntm类创建了一堆对象,也只有这个kk里面有这个内容,其他的不添加是没有的。

从0.1开始学Python——[17]相关推荐

  1. 从0.1开始学Python——[6](番外练习)

    从0.1开始学Python--[6](番外练习) 小练习,写了一个用于记录自己使用的常用英雄信息的小程序. print('-'*20, '欢迎来到英雄联盟', '-'*20)heros = ['\t离 ...

  2. 从0.1开始学Python——[9]

    从0.1开始学Python--[9] 字典(dict) 字典的操作 修改字典 字典项的删除 现在开始学习字典,字典也是写程序过程中非常重要的东西,但是字典不属于序列,**属于映射(mapping)** ...

  3. 从0.1开始学Python——[29]

    从0.1开始学Python--[29] 文件 打开文件 读取文件 关闭文件 文件的简单读取 readline()方法 文件,不仅在Python里面的.py,电脑里面大大小小的内容基本上都属于文件. 但 ...

  4. 从0.1开始学Python——[6]

    从0.1开始学Python--[6] 修改列表 修改元素 用切片的方式修改 用方法修改列表 遍历列表 while循环遍历 for循环遍历 列表在编写程序以及差错中十分重要,因此开继续学习列表的其他操作 ...

  5. 0基础转行学Python有前途吗?培训靠谱吗

    Python语言的流行热度最近几年都是大家有目共睹的事情,根据相关数据显示,随着近些年的发展,Python已经成为了四大编程语言之一,从云端.客户端到物联网中,Python的发展是无处不在的,市场人才 ...

  6. 小白学python买什么书-0基础小白学python有没有什么书可以推荐的?

    你是0基础,这就限定了书只能是为初学者准备的.我亲弟弟学python买了本python进阶书,这书买了两年,没看过20页,因为读不下去,没基础. 所以 1. 一定要选入门书. 入门书也有很多.那么哪本 ...

  7. 0基础小白学python好学吗-如果是一个纯0编程基础的小白,如何学Python

    Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...

  8. 0基础小白学python好学吗-零基础适合学Python吗?小白能否学会Python?

    原标题:零基础适合学Python吗?小白能否学会Python? 我没学过编程,能否学会Python? 肯定的回答您:完全能学会 其实,很多个程序员都是从不会到会,每种知识也是从基础到复杂,大家都是从零 ...

  9. 0编程基础学python之数据类型和数据操作

    0基础学习python之数据类型和数据操作 大家都知道,我们python的强大功能之一就是处理数据,所以我们今天就来探讨一下python中的一些数据类型和他们之间的操作吧. 先来回顾学过知识,上图: ...

最新文章

  1. 谈谈对分布式事务的一点理解和解决方案
  2. 算法-从先序遍历还原二叉树
  3. Linux-Apache和PHP结合
  4. php 规格,PHP 设计模式系列之 specification规格模式_PHP
  5. Boost:GPU上的2D图像中绘制最终的随机“walk”,并使用OpenCV进行显示
  6. MFC菜单栏(CMenu)控件
  7. msf payload php,Metasploit(四)--Msfpayload命令
  8. t-sql中的事务控制及错误处理
  9. artdialog子弹窗关闭父弹窗
  10. HBase的RowKey设计
  11. python释放变量内存_看完2019年阿里巴巴Python面试题详解,月薪3万不是梦
  12. c语言操作题和答案,C语言上机操作题及答案.doc
  13. 图形学笔记1.直线扫描转换与devC的图形库ege扩展
  14. linux达梦数据库执行sql脚本
  15. 基2时域采样快速傅里叶变换、反变换算法在python上的实现(自制轮子)
  16. 【自动化测试selenium】
  17. 移动云计算的四大特点
  18. Python个人常见语法问题
  19. 如何在表格里做计算机统计表,excel怎么制作统计表格 excel统计表怎么添加标题...
  20. 计算机excel实验总结,计算机概论excel实验报告.doc

热门文章

  1. 深度解析老年产业投资的底层逻辑
  2. Softether详解(一)——V*N与softether概述
  3. 竞品分析报告各要素解析
  4. SSM+jsp实现仓库管理系统,界面那叫一个优雅
  5. 转载pll工作模式解析
  6. 家庭网络布线Show全攻略
  7. 如何在水晶报表中添加条形码-winform ,c#.net
  8. [转载]国家天文大地网_RWERWERWE_96921_新浪博客
  9. Kali Linux 更新系统 2020.3
  10. 新疆理化所计算机复试科目,中科院新疆理化技术研究所