00:00
好,刚才呢,我们介绍了一下类是吧?哎说了这么多,哎,那其实总结起来类就是什么呢?哎,我们说类就相当于一个图纸,我们可以根据这个图纸去创造什么呢?创造对象啊,你可以根据这个图纸去重复的去创造对象,那比如说拿我们现实生活中举例子,你像哎,你是人,我是人,我们大家都是人是吧?男人女人小孩儿都是人,对吧?那我们这些只要是人,像我们这些人,他实际上是都属于人类啊,诶都属于人类,所以我们这些人一定是通过一个类去创建的,通过人这个类来创建人这个对象啊,所以类非常简单,就是我们可以通过这个类来创建对象,它就相当于什么呀?诶一个图纸相当于什么呀?相当于一个模具,诶相当于什么呢?相当于一个设计稿,我们可以根据这些东西是不是来创造这个实例啊,哎,创造一个实例诶。
01:00
结合一下现实生活中,这个东西非常的好理解啊,非常好理解,但是这里边我们又提出了一个问题,那你说了这么多,这个类它到底是什么呀?哎,类到底是什么呀?那这里边我们来继续来深入的来说这个类,那类是什么?那注意了,实际上我们注意类也是一个对象啊,类也是一个对象,因为我们之前去讲这个面向对象,我们就说了一切皆对象,所以累也不例外,一定注意累也是一个对象,但是累也是一个,哎呀,说到这很多同学就乱了,累也是一个对象。它是用来创造类,可以用来创造对象,那类到底是什么呀?哎,那其实总结起来,其实类就是什么呀?诶类就是一个用来创建对象的对象啊,它就是用来创建对象的对象,那很简单,那我们说了,你说我们说这个类就像一个图纸,我们根据图纸是不是来创造这个什么呀,来创造一个对象,那图纸我是不是也得根据一个什么东西来创建来的,所以图纸实际上也是一个对象啊,图纸我们得有图纸的图纸对吧?图纸它也是一个对象,所以类也是一个对象,它是用来什么呀,创建对象的对象,好,那同学说,老师你说类似对象你怎么证明啊?哎,其实非常好证明,那既然是对象,我们说了对象是不是都有那三个部分呀?诶ID typeb,还有value value我们就不说了,因为我们刚才创建这个对象是个空的,对吧,那他的ID和typeb你总得有吧,哎,你说他这个对象你总。
02:40
哎,有ID跟tab吧,所以在这我们直接print一下ID,我们来看一下这个my class,然后再看一下什么呢?哎,Tap,哎来一个这个my class啊my class这一保存,我们一执行ID是它class是不是叫做一个type呀?哎,也就是说实际上我们的类是一个type类型的对象啊,所以这里边我们来说一下诶类它是什么呢?诶类是我们叫做一个哎,Type类型的一个对象啊,所以我们创建类,诶所以我们创建类,或者说我们定类,诶实际上诶实际上就是定义了一个这个诶type类型的对象,给你创建一个int类型的对象,给你创建一个string类型的对象,本质上没有任何区别,所以注意类也是一个对象,你就记住了。
03:31
一切皆对象,你看的什么玩意儿都是对象啊,都是对象,好,那这看完了,那我们就要简单的解析一下,当我们去定义一个类的时候,到底发生了什么啊,发生什么好,那这里边我们来还是啊遇到这种问题,我们最直接的方式都是干嘛呀?哎,画图啊画图还是我们这个简易的这个图啊,简易这个图,嗯,我在这儿啊复制一下。CTRLCCTRLV,那在这儿呢,我现在都给它,诶咱们先把代码粘过来对吧?代码粘过来,那我们这个代码呢,在这儿来看代码,我们就把这个类定义代码带过来,那这里我们是不是定义的一个my class这么一个类啊,那注意啊,这个类其实我们这后边class跟一括号,这个括号我们里边说可选的一个副类,对吧?可选的副类,但是其实你现在这没有副类,这括号也可以干嘛呀,也可以省略这两个效果是什么呀?哎,一样的啊,是一样的,这括号你写不写都行,这括号也可以省略啊,来我们给它复制过来啊,括号也是写不写都行啊,如果没有复类的话,来我把这个代码粘过来。
04:36
CTRLCCTRLC粘过来,那括号我先省略了,你要知道这么写也可以啊,也可以,好,那现在我在这里是不是创建了一个类啊?诶,那这个类它怎么在我内存中体现的?那注意了,我创建了一个类叫做my class,那实际上这个my class它也相当于一个变量,相当于我在内存里边也有一个变量叫麦class,那这个时候其实你会发现干嘛呀,我也可以给我这个麦class重新赋值,我直接来一个麦class,等于一个这个hello,那现在我就把麦class变成什么了,哎,变成字符串了,看到了吧?诶,我也可以给它进行重新赋值,所以这麦class也相当于是一个变量,但是它实际上有两个作用,一个是变量,还有一个是什么呀?哎,类名啊,两个作用,所以在这里边我们先插入一个什么呀,哎,插入一个表格,我直接复制吧,哎,这个表格来干嘛的呢?这个表格来存放我这个变量啊,变量的这些我先都删掉啊,先都删掉,那这个变量的名叫什么呢?诶叫my class啊MY。
05:37
麦克class我调整一下,那这个变量名有了,那现在我定义了这个class,那这class整体它是在干嘛?哎,它实际上是在创建一个对象,那既然是在创建对象,我们是不是要在内存里开辟一个空间呀?诶所以在这儿我专门开辟了一个空间放谁?这个空间就是放我的这个my class这个类啊麦class这个类的,那既然是个对象,它就得有三个部分,一个是我们的ID,还有一个是什么呀,还有一个是我们的这个type,我们的什么呀类型,还有一个是不是就是我们这个value,哎,Value,那现在ID我们随便写一个,比如说就是一个0X123随便写一个,哎,它不一定是啥啊,不一定是啥,然后是还有type呀,哎,那它的tap是什么?Tap刚才我们已经看到了,它的type是不是叫做一个class type呀?哎,这是它的一个类型啊,它的一个类型我们就简写吧,Typeb就是type啊,它的类型就是type类型对吧,类型就是类型啊class type,然后它的value呢,哎。
06:37
Y6现在这是不是就没有体吧?诶它没有这个代码块,所以它是一个空的,所以Y6是没有的啊,所以它这里边是是空的,诶但是你要知道可以指定现在是空的啊,现在是空的,所以现在我们这麦class它,诶它的值应该是多少值是不是就应该是0X123呀,诶0X123,所以在这儿我们有了一个麦class,它指向的是我们这个类这个对象,那这个就是们说的一个什么呀,一个类,所意注意啊,我们的类也是一个对象,一定注意啊,万物皆对象,一切都是对象,什么都是对象,类也是一个对象,所以当我们定义完了一个类,实际上是这样的啊,实际上这样的,那当我们执行这个代码的时候,我们是不是执行了一个这个M等于MY呀,诶,我现在在干嘛,MC等于my class,来我这写一下啊,把代码给它粘过来,我这写了一个MC等于my class那。
07:37
这个时候又发生什么呢?哎,那首先还是MC非常简单,在这里我是不是有一个变量叫MC啊,诶MC然后在这儿我这用了一个my class,是不是my class,这个变量对应的是一个一个类啊,哎,等于在这儿干嘛,我是不是在调用这个类来创建我们这个对象啊,哎,调用我们这个类来创建对象,所以这里边我们来注意了,我们这来写一下啊,来写一下,我们这来说一下什么呢?在这我们单独写一下,我们来说我们这个创建,诶使用创建我们这个对象的一个流程,或者说什么呀,使用我们这个诶类创建对象的一个流程,它是怎么创建的,那首先在这儿啊,我们这样吧,写完了我们在这儿再再粘过来啊,写完粘过来,那我这调了一个MC,等于麦class,首先声明变量我们就不说了吧,咱们写一下吧,第一个我们先干嘛,哎,创建一个变量MC,创建一个这个变量MC对吧,然后第二步呢。
08:37
变量MC有了第二步,我们这是不是调了一个类来括号啊,哎,我们这是在调用这个类来创建对象,所以第二步在什么呢?哎,在我们这个内存中,诶,创建一个新对象啊,也就是说我在这里实际上我要立即在内存中开辟一块新的区域,这块区域干嘛的,这块区域的作用就是用来放我那个什么呀,哎,放我那个新对象这块呢,我们来给它填充一个颜色。
09:08
诶,这块区域它的作用就是专门用来放我那个新对象啊新对象的,那既然是新对象了,是不是也得有这些值啊,哎,首先它也得有一个什么呀,Idd呢?哎,分配一个,我们直接来一个0X223,这是不是分出来了,然后是不是还得有这个tap呀,哎,Type是什么?那注意了,它用谁创建的,用哪个类创建的的类就是谁,那我们这个是由哪个类创建的,是不是由my class这个类创建的,所以它的type啊,我们这儿就应该是谁呢?就应该是这个my class啊,我就不写全的了,全的应该是class my class啊,我就直接写my class,因为它是由my class这个类来创建的,然后是不是也得有value,哎,也定有value,但是现在我有没有往这指指定value,哎,我是不是并没有指定Y6,哎,并没有指定Y6,所以Y6咱们先不管啊,先不管,所以就这么一个结构,那现在我这个对象是不是创建完了,哎,对象创建完了,然后第三步呢。
10:08
哎,第三步我们是干嘛?哎是将我们这个什么呢?哎,将我们这个对象的一个,哎ID,哎ID干嘛呢?哎赋值给我们这个变量,所以这个时候它的ID就是一个0X23,等于说它现在有一个什么呢?哎,有一个哎引诱是指向的是这个对象啊指向的这个对象,那这个就是我们的创建对象的一个过程,所以你会发现其实我们创建对象的过程都是固定的,首先先在内存里开辟一个空间,开辟空间以后地址是不是有了,地址有了,然后指定类型,那类型由谁决定,由你使用的那个类决定,如果你创建的是string,你使用的就是str那个类,那你的类型就是str,如果你创建的是整数,你使的就是in那个类,那你的类型就是什么呀,Int,诶确定类型,而我们用的是my class这个类,所以我的类型是不是麦class呀,哎麦class,然后就是value,那这个时候我这里边没有value,所以value就没有,如果你有。
11:08
Y了你是个字符串,你Y了就字符串,你是个数字,Y了就是数字,你是个列表,Y就是列表,是不是根据你的值来定啊,哎,根据值来定,那这个就是它的一个过程啊,我们创建对象都是这么一个过程,当然我这个过程是目前来讲是一个简化的一个流程,我们待会儿再会来说一个什么呀,哎,完整的流程啊,完整的流程,那现在我们是不是就创建好这么一个类呀,哎,创建通过这么创建好这么一个类,并且通过类找到了一个什么呀,诶对象,那这个时候由于我们这个类你看啊,我们这个类my class这类里边就写了一个pass,所以这个类里边现在是不是什么也没有啊,诶什么也没有,那我们现在通过my class这个类所创建的对象就是一个什么呀?哎都是一个空对象,哎现在我们什么呢?我们哎通过这个麦class哎这个类哎创建的对象都是一个空对象,也就是什么呢?也就是我们。
12:08
这个对象中,哎实际上干嘛呀?哎什么都没有啊,什么都没有,它就是什么呀,哎就相当于是一个哎空的盒子啊,就相当于是一个空的盒子,那现在空盒子有啥用啊,我干嘛费半天劲我创一个空盒子呀,哎空盒子其实也有用,空盒子有什么用啊?那既然是空盒子,我们是不是就可以往这个盒子里去添加东西呀?哎添加东西所以注意我们来说一下对象中也可以干嘛呢?哎对象中哎我们可以干嘛?哎这样写吧,哎我们可以象这个对象中添加变量啊添加变量那怎么添加,咱们先说一下我们对象中的这种变量,我们什么呢?我们称为属性啊对象中的变量我们称为属性,怎么添加,我们直接语法它是什么呢?对象对象点。
13:08
点一个这个属性名等于一个属性值,所以现在比如说我们是不是有一个MC的一个对象啊,我要想向里边添加属性怎么办?你可以直接来一个mc.name等于一个孙悟空,那现在我们先执行一下来看他是不是不会报错,哎,不会报错,那现在相当于什么?我现在往MC里边添加了一个name属性啊,注意其实就是一个变量,就相当于一个变量,但是这个变量是在对象的里边,所以我们叫做属性啊,叫做属性,现在我给MC添加了一个内幕属性值是孙悟空,那这个在我们图里怎么体现来这个我就不去掉了啊,直接写到笔记里了,MC name等于个我简写了这来一个SWK等于一个孙悟空,那这个时候我这name属性是加到哪的?是加到了我们这个对象里,是加到了MC对应的那个对象里,所以注意这种形式也是在改对象,改MC这个对象,那所以在。
14:08
这里边它会有一个VALUE6 value6是什么呢?Name只等于什么?只等于一个这个孙悟空啊,只等于一个孙悟空,那这VALUE6啊,这样我给它加一个冒号啊,表示下边的都是Y6啊,下边都Y6,那现在这孙悟空在哪呢?哎,在MC对应的这个对象啊,对应的对象里,那我要想获取到这孙悟空怎么办?哎,获取也非常简单,直接干嘛?诶,Print一个MC,点一个name,这一保存我们来看效果,这一执行孙悟空是不是有了,哎,孙悟空就有了,那这样我们就可以打印了这个孙悟空啊打印那孙悟空那注意了,现在我这如果换一个MC杠二你说行不行,有没有name,哎,我这一执行干嘛了,是不是报错了?哎,My class object has no attribute name attribute属性对吧?没有name这个属性,为什么?因为我刚才MC这个name是添加到MC里的,而没有添加到MC杠二里,所以MC杠二里没有,如果你要咱们这个图里怎么体现呢?还是啊在。
15:08
这我们来画一个,在这儿呢,我来一个MC杠二,也是等于麦class麦class,那注意了,这个时候我是不是又调用了麦class来创建了一个新的对象啊,那这个时候注意这两个对象一不一样,诶注意是不一样的,MC是CC杠二是MC杠二,那同样我这个要创建,我是不是多了一个MC杠二,诶MC杠二,然后我也是调麦class创建对象,那其实跟它有点类似对吧,我直接复制了有点类似,但是又不一样,首先肯定不一样的是谁,它的地址是不是不一样了,诶地址我们改一个叫323TAP呢,诶tap是一样的,因为他们是不是都是用这个类型创建的,哎,都是这个类型创建啊,我把这些改小点啊改小点哎都是用这个,诶麦class这个类型去创建的,然后呢,它这个value有没有,哎,Value现在是没有的,那现在我们来说MC杠二指向的是谁,是不是指向的是他呀?哎,那我们这儿来画一个箭头。
16:05
画一个箭头,MC杠二指向的是这个对象啊,指向的这个对象,所以这个时候注意,我刚才往MC里边添加了一个name,它里边有name孙悟空了,但是MC杠二里有没有,哎,它是没有的,哎,因为我没有去改他这个对象,我改的是MC对应的那个对象吗?哎,没有改这个对象,好,那现在我要想RMC里C杠二里也有怎么办?哎,那我就需要什么呀,MC。哎,杠二,哎,点一个name等于一个这个猪八戒啊,猪八戒这一保存,现在我一打印是不是才有猪八戒啊,哎,所以注意啊,我们可以像这个盒子里去添加属性啊,添加属性就相当于添加变量一样,只不过这个变量存在于什么呀,对象里,而不是存到了什么呀,哎,全局作用域啊,存在一个对象里,那同理,MC3有没有啊,哎,没有,MC3是没有的,因为我没有往MC3里边去添加啊,去添加哎就这么一个东西啊,就这么一个东西,好,那这里我们说了一下,我们这个,诶一个这个。
17:05
类,我们的类也是一个对象,并说了一下我们这个对象的创建流程啊,创建流程,所有对象创建流程都是这样的,回顾一下这个步骤啊,当然这是一个简化版的步骤,叫什么呀?第一个创建一个变量MC,第二个在内存中创建一个新对象,第三个将对象的ID赋值给变量啊,它是一个三个步骤,但是这是一个简化版,但是你先把这个步骤给它记住了,待会儿我们再给它去完善这个步骤啊,完善这个步骤好,那这个图啊,我也是截一下。截一下我们来放到我们的这什么呀,哎,放到我们的这个。资源里啊,我们来放到我们这个课程里啊,LESSON6,我们直接来新建一个文件夹,叫做一个这个MGMG里边呢,我这个图片我们叫做一个哎。图一吧,我们就叫做一个图一来,待会儿呢,你可以通过这个图来看一下这整个流程,但是尽量自己呢,把这个图来自己尝试去画一下啊画一下我们来停一下。
我来说两句