00:00
好,刚刚呢,我们展示一下这个类创建对象的一个流程啊,这个流程自己去体会一下啊,包括我们之前创建的那些。Number啊,字符串啊,甚至函数对象啊,甚至我们创建的类对象啊,它都是这样一个流程啊,都是这样一个流程,但是实际上我这写了一个东西啊,其实这样写啊,其实你会明显感觉到不太对,为什么不太对呢?因为我们在这里定义了一个my class,对吧?Myc class,现在麦c class里边什么都没有,我们所通过my class里创建的对象都是空对象,都是一个空盒子,而这个空盒子却是很万能的,怎么万能啊?哎,里边想放什么放什么,你是不是想放个name,想放内置,想放粘,想放个dress,你是不是想往里边放什么就放什么呀,虽然我们这只放了一个name,但是是不是只能放一个呀?哎,肯定是能放多个,而且可以无限放,随便你去怎么放,但是这样的话,你就会发现,那我的这个类是图纸对吧,那似乎我这个图纸好像就没有什么存在的必要了,为什么呢?因为你虽然是依据图纸去创建的这个容器,但是实际上这个容器。
01:12
你现在你想放什么,是不是就想就能放什么呀,诶,所以现在这个图纸就没有必要了,对吧?所以我们真正的类,我们一般不会这么写,我们一般不会说我创建一个对象,这个对象里边想放什么就放什么,它一定是有规则的,一定是有规矩的,我让你放什么,你才能放什么,你不能自已什么呀,哎,自己瞎放对吧?哎,那好,那再补充一个是吧,我们现在这个属性值是吧,这叫属性名,这个叫属性值,属性值我们是不是是字符串啊,那我可不可以是布尔值啊,我可不可以是数字啊,我可不可以是其他对象啊,哎,当然可以,一定注意属性值可以是任意对象,也可以是什么呀,也可以是函数啊,也可以函数,好,那既然不能这么用,不能自已肆意的去往这个对象里添加属性,那到底应该怎么办呢?啊,到底应该怎么办呢?那在这里让我们来说一下,我们来说一个什么呢?哎,我们来说一下我们这个类的定义,哎,类的一个定义。
02:11
哎类我们说了类是图纸对吧?那我们要如何去定义这个类呢?那注意了,哎类和我们这个对象,哎都是对什么呢?哎对我们这个,哎现实生活中,现实生活哎中或什么呢?哎或我们这个,哎程序中的这个什么呀?哎,内容的一个抽象啊,内容的抽象一定注意,哎我们的类是对我们现实生活中或者程序中一个抽象,我们如果定一个人的类,那这个类就是对我们人的抽象,如果我们定一个,比如说我定一个飞机这个类,那这个飞机就是类,这个类就是什么呀,对我们这个飞机的一个抽象,那么如果定了意义的是一个游戏里的人物的一个类,那这个就是对人物那个类的一个抽象,一定注意,类,或者说我们的程序一定是对我们现实生活的一个抽象,你不能凭空创造一个,就像我们说的,你这创建一个类,这类什么都没有,它什么都往里加,那这个类在我们现实生活中存不存在不存在,你很。
03:12
坦然你说我定一个人,这个人我默默认什么都没有,但是你什么都往里加,那这样它这个类的存在就没有任何的意义,它只是一个简单的容器,它并不是一个什么呀,诶并不是一个我们生活中存在事物,所以像麦克拉这个只是在我们演示中存在,在生活中,在程序里是不会存在的,它没有意义啊,没有意义,那我们说了内核对象都是对我们现实生活中诶内容的一个抽象,那我们这块要怎么抽象呢?那我们想一想我们现实生活中所存在的事物啊,现实生活中的事物。哎,的事物或者程序中的内容的一个抽象,那问题来了。那我怎么抽象,比如说我们现在想想,我现在假如说我就想对人抽象,我对人抽象,那我怎么能通过一个类,或者说通过一个对象来体现出一个人类。
04:07
想想怎么通过一个类,通过一个对象来体现出一个人,这里你一定要注意了,我们这里所说的抽象,你并不是说我真的把这么一个真真正正的人整到我这个程序里,那是不可能的,那成克隆了,对吧?所以所谓的抽象,我们是干嘛,是把这个人的特点给它抽象进来,诶,人有的东西我们需要人,哪些东西我们就给它放到什么呀,放到程序来,所以我们要想一下我们任何事物都共有的一个特点,所以这里边儿注意,那实际上。实际上我们所有的这个事物都由什么呢?哎,都有两部分构成,两部分构成哪两个部分?一个部分我们叫做什么呢?一个部分我们叫做一个数据啊,一个部分我们叫数据,或者你也可以说什么呢?叫做一个属性,什么叫数据?我们想想人人有什么,有身高,有体重是吧?你的三围是吧,胸围,然后各种各样的是吧,各种各样的数据,哎,有你,你,你有几颗牙?哎,你有几个眼睛?哎,你有几个耳朵,你的视力怎么样,你的听力怎么样,这些是不是都是你的数据啊?诶,这些都是你的数据,各种各样的数据,眼睛多大,头发什么颜色,这些都属于数据啊,你的数据啊,你多聪明对吧?你考试考多少分,这些是不是都是数据啊?哎,你想想,你把每一个人都能用这么一个数据去表示,你把你所有的数据都给它获取到,那其实我是不是就已经获取到你这个人的基本信息了,哎,那这是第一个数据,那我们这个数据在我们对象里体现就叫什么呀,叫。
05:40
属性,我们说点name.age点这些都属于数据,那除了数据还有什么?你想想你人除了数据还有什么?哎,我们想想我人可以跑,我人可以说话,哎,我人可以说话,对吧,我可以蹦,哎,有的,你你如果你是个鸟,你还可以干嘛?你还可以飞啊,你还可以打架,你还可以,你还可以骂人,你可以干很多很多好的事情,很多很多不好的事情,你是不是还可以有,这叫什么?叫什么我说话,我蹦,我跳,我跑,这叫什么?这叫什么?这是不是叫行为啊,哎,行为。所以我们的第二个部分叫什么呢?叫做一个行为啊,所有的事物都由这两部分构成,一个叫数据,一个叫行为,行为在我们对象里叫什么呢?叫做一个方法啊,叫做一个方法,所以在这儿我们要定义一个类,这个类它其实就包括这两大部分,一个叫做数据,一个叫什么呢?一个叫行为,也就说你有哪些数据,你可以进行哪些行为啊,那数据在我们对象里,我们称为什么呢?叫做属性啊,属性行为在我们的对象里,我们。
06:40
我们称为什么呢?称为叫做方法,那方法暂时我们先不理,我们先说什么呢?我们先说一下这个属性啊,先说下属性来,那在这里我们先来尝试着定义一个类啊,我们来保存一下,我们来定义一个我们真正有意义的一个类啊,我们来定义类,第二一个PY,那我们定义个什么类呢?刚才说半天了,人类人类对吧?那现在我们先尝试定义一个这个表示我们这个人的类啊,表示人的类,那首先定义类,不用想了,先来一个什么呀,哎,Class,哎,你看我这一些class是不是会生成这么一堆结构啊,这个结构我们先不用啊,给它去掉,我直接来一个class class后边跟的是什么?我们的类名一定注意类名我们用的是大驼风,手写字母一定是大写,人类是不是person呀,P son,这是比人类啊,那括号可写可不写,在这里我先不写,我直接不写,之前我们是不是先写个pass,哎,我先写好了,那在这里我们就创建好了一个人类这个对象。你这一执行不会有任。
07:40
有问题,但是现在这里边是不是没有数据啊,诶,那我们来看看吧,那我现在这个跟我之前那个那个麦class那个类基本上是一样的,是空的对吧,是空的,那我能不能现在创建人类的实力啊,哎,我来创建我们这个什么呀?哎,Person的实力,创建我们这个,哎,Person的实力,Person的一个实力。
08:04
哎,那我就简起了啊,我直接P1等于一个这个person,那现在它是不是就是一个person实例,我再来一个P2等于一个person,那现在是不是这个P2也是一个person实力啊,那现在我是不是等于有了两个person实力,哎,两个person实力,但是现在问题是我这两个person实力里面有没有属性,哎,没有属性,它实际上是一个什么呀?哎,是一个是一个空的,那这个用途怎么体现,那其实是不是就是我们之前那个图啊,哎,之前那个图给它优化了一下,哎,这样是不是好看一点,对吧?我把每一个对象用一个什么呀,用一个表格来表示啊,分成这么三部分,ID太白,Value,这样好看一点啊,好看一点跟之前那图是一样的,那现在我们这个代码如果用这个图表示它是什么样的,来CTRLC,我这复制一下,我把这堆代码都粘过来,CTRLC。CTRLV,那首先啊,首先我们在这啊把注释去掉,把注释去掉,那首先我们class person是不是定义了一个person这个类啊,哎,那所以我就直接改啊,我这个类改成叫一个person,跟我们之前是一模一样的,那这是不是也叫做一个person呀,哎,Person然后ID我们就随机生成,就不管它了,然后class是不是它也是typeb呀,Y6它是不是也是没有啊哎,也就是一个pass,然后P1等于person,我这个变量叫做一个P1,那这个时候我再是调用哪个类去创建的是不是P1这个类,哎,P1这个类,然后ID我们就不管了,也是随机生成这个class,它是不是麦class,诶它不是麦class,它的类是谁啊?诶,它的类是我们的这个叫做一个person啊person p SN person,然后它有没有value啊,哎,没有value value我们也是没有添加啊,没有添加,然后同样这个P2是不是也是一样啊,哎,我们这来一个这个P2,诶P2呢,那我这这不叫P1啊,这应该是调用我们这个什么呀,哎,调用我们这个。
09:56
Person这个类来创建的,对吧?Person这个类,那这是不是也是调用的这个person这个类,哎,Person这个类,那注意它的类型是不是跟它是一样的,哎,但是他们是两个对象,只不过这两个对象里面都是什么呀?诶都是空的啊,都是空的好,那现在我们这两个对象里边是不是都没有数据啊,诶他们5VALUE6都是空的,当然我可以通过p1.name去添加,诶也可以通过p2.name,是不是像它里边去添加属性啊,诶添加属性,但是这样的话我们还是name个问题,就像我们说创建了一个人,我们有一个人类,我们通过这个人类可以创建对象,但是这个类它没有,它对我们这个对象没有任何约束,那这个类还有没有意义啊,哎,没有意义,你创建一个对象,这个对象里边你什么都可以添加,什么都可以添加,那你这个类就没有意义了,所以我们这个对象里有什么,我们是不是需要在类里边去指定啊,哎,在类里边去指定,所以我们在这儿看到类里边我们在这儿是不是可以写我们这个代码块,哎,在这代码块,所以这里边注意我们来说一下。
10:56
类中我们可以什么呢?哎,在类的这个代码块中,哎,我们可以什么呢?哎,我们可以定义什么呀?哎变量和这个什么呀,函数啊,可以定义变量函数,比如说你就可以直接写一个A等于十,你也可以再写一个B等于20,那在这儿我们是不是就定义两个两个变量了,哎,两个变量,那这里边注意了我们所什么呢?哎在类中,在类中我们什么呢?我们所定义的这个变量将会什么呢?将会成为我们这个所有实例的什么呢?哎,公共属性啊,将会成为所有实例的公共属性,所有实例都可以什么呢?都可以访问这些变量,所以在这儿你是不是定义了一个A一个等于十,B等于20啊,那注意这个A,这个B通过P1P2就都可以访问了,我们试试啊试试看,这我直接PRINT1下来什么呢?p1.1个A然。
11:56
这再来一个p2.1个B,就也是通过属性的平式仿认,这AB就相当于什么呀,相当于属性名,我这一保存一执行是不是十二十就就访问到了,哎就访问到了,所以注意你在这里边可以定义这个变量和属性,但是很明显,你如果这定义的是一个人类,你这A和B这个变量名有没有啊,诶A和B这个变量名很明显没有意义,你这里边的变量应该是什么,应该是我们人所共同具有的那些特点才可以成为这个名吧,所以你定义AB,不要定义AB,一定要定义什么呀,有意义的名,什么名有意义,那我们人共有的属性有什么?哎,人共有的属性有什么呀?哎,那最典型的是不是人都有这个name呀?哎,人都有这个name等于什么呢?等于一个这个孙悟空,比如说我就写一个孙悟空,那现在我们这儿注意了,Person里边是不是就有一个属性啊,注意这个属性是公共属性啊,这个叫做一个公共属性。所有变。
12:56
都可以访问公共属性啊,我们这个所有变量,哎,所有对象啊,所有实例啊,我们叫做通过类创建那个对象,叫做这个类的实例,对吧?所有实例都可以访问,所以在这儿我们直接看一下啊,我这来一个P一点内一保存,走一个是不是孙悟空啊,诶我这再来一个p2.name这一保存一执行是不是也可以访问,诶都可以访问这个name属性啊,都可以访问这个name属性,那这个东西在图里怎么体现啊?来,我把这个复制过来,那现在我这里边我就不写pass了,我这是不是写了一个name等于孙悟空啊,那现在这name孙悟空在哪呢?我是在类里定义的,所以这个值是不是应该在内这个类的value里啊?哎,所以在类的value里应该有一个name,等于一个什么呀?哎,孙悟空就有这么一个东西,但注意了,我现在这个东西在对象里有没有,在对象里有没有,在对象里是没有的啊,在对象里是没有的。
13:56
诶,那注意了,因为这个东西在类里,所以注意所有的该类实例都可以访问啊,都可以访问,它是一个公共的P一点内你访问的是它,P2点内访问干嘛呢?也是也是它,哎,这么一个孙悟空啊,这么一个孙悟空,然后再看这是我们定义的一个变量,定义变量我们还可以干嘛,我们说了还可以干嘛,还可以定义函数啊,还可以定义函数,哎,那我们说了,哎,在类中我们也可以什么呢?也可以定义函数,那这些函数那注意了啊,类中定义的函数,类中定义的这个函数我们什么呢?我们称为叫做方法啊,一定注意中定义的函数我们称为方法。
14:38
称为方法啊方法,那这些函数,哎这些方法哎可以什么呢?哎,可以通过我们这个什么呀,哎,该类的。哎,该类的所有实例,哎,干嘛呀,来访问,那方法是来干嘛的,我们说了这种变量它是用来表示属性的,也就是表示我们这个类,表示我们这个对象里边的数据的啊你像人有名字对吧,每个人都有名字,那方法是干嘛的,方法是体现功能的,体现行为的,那你人有什么行为,比如说我人有名字,我人是不是也可以去跟你说你好啊,哎,所以我们在这儿可以定义一个什么呢?哎,定定义一个。
15:21
方法叫什么呢?叫做一个c hello,定义方式跟我们的函数定义方式是一模一样的,只不过因为它定义到了什么呀类里,所以它叫方法,哎方式跟函数一模一样,那在这里我就可以定义什么呢?哎,定义一个我直接print一个,哎我是什么呢?哎,我是这个person中的方法,哎,不用不用写了,既然是say hello,我们就说什么呀,哎,我就说你好,诶你好不就完了吗?对吧,一保存是不就完事了,哎,完事了,诶那这定义完了我能不能掉啊?诶那还是先说一下这东西在图里怎么体现啊,万一粘过来CTRLC在我们这代码是不是多了一个这个方法呀?哎,多了一个方法你就记住了类中的函数就叫做一个什么呀,就叫一个方法,那现在我有这么一个方法了,就相当于什么,相当于在这是不是又多了一个呀,哎,多了一个,多了一个谁呀,多了一个这个c hello啊say hello,它是一个什么呀,它是一个方法啊,我就直接简写,写了一个什么呀,诶写了一个FN,那也就是说它现在里边有了一个方法。
16:19
往下走啊,往下走我们调整一下。那现在那注意了,那我能不能调这个呀?哎,那其实方法这玩意儿是不是也属于一个变量啊,你属性能调,这方法肯定也能掉,那怎么去调用这个方法,我现在想调这3HELLO怎么去调,那我们先来看一下,现在我们来能不能调啊,能不能调看着啊,我直接来一个p1.1个什么呢?点一个这个c hello,那注意了,我们怎么去调方法,调用方法,那其实就是什么呀,对象点一个方法名啊,对象点一个方法名,然后加括号,对象你是P1,你就P1,你是P2,你就P2,方法名是什么?方法名是不是就对象你这个,在你这类里边定义这个名,你定义叫c hello,你就say hello,如果你定义叫say byby,你就say byby,对吧,你c name就name,你定义什么你就调什么,所以我这个名函数方法名叫say hello,所以我这是不是叫p1.sayhello啊,哎,那注意这叫做做一个方法,那同学说老师那你这个方法跟函数有什么区别吗?哎,那第一个方法跟函数第一个区别,第一个是调用方式的区别,你一个你函数。
17:23
你是不是直接调啊,而方法你是通过什么什么点的形式去调的,这是第一个区别,但是这不是最主要的区别啊,这不是最主要区别,那我们来看有什么区别,这一保存我们这一执行啊,执行走一个,诶首先你看我掉没掉成,诶没掉成,为什么没掉成,你看报错了c hello t什么零,哎,零的这个参数把什么1ONE worth given什么意思呀,Say hello这个方法。需要什么?需要零个位置参数啊,需要零个位置参数吧,但是干嘛呀,你调的时候给了他一个,哎,给他一个什么意思啊,这个错误就相当于什么呀,我们定了意了一个无这个哎没有参数的函数,但是你调的时候你传了一个参数就会报这个错误对吧?我们之前都见过,诶,但是不对呀,不对呀,我这没传,我这首先我没有定义行参对吧,没有定义行参,然后我这调方法的时候,我有没有传实参。
18:23
没有传吧,但是他却跟我说,我给了一个十参对吧,给了一个十参,那这个是怎么回事啊,哎,这是怎么回事啊,那注意啊,这个就是我们方法调用和函数调用的区别,和我们这个函数调用的一个区别啊区别哎我们说了,哎如果是什么呀,如果是函数调用则什么呀?哎则你调用时哎给几个参数,你调用时哎传几个参数。哎,就会什么呀,哎就会有几个食参,哎你传两个就有两个,你传三个就有三个,这好理解对吧,但是如果是,哎如果什么呢?如果是方法调用啊,如果是方法调用,那么什么呢?哎,我们的它会默认什么呀?哎传递一个参数啊,默认传递一个参数,所以注意你这是不是叫方法呀,只要是方法,它一定会有一个参数啊,一定会有一个参数,你你这么怎么调都会传递一个,所以注意,所以注意,所以方法中诶你至少要要什么呀,要有要定义一个型参,所以注意,因为它传的时候默认至少传一个,他肯定传一个啊,肯定至少传一个,那你在定义的时候,你没定义行参是不是就不行了,所以在方法中你至少定义一个刑参,这个行参的名字呢,实际上是无所谓,但是待会我们会说,我们会有一个规范,但是现在我们先不管它,这个参数呢,我们就叫一个A,随便写一个,我们先占上。
19:55
赵猛说啊,以后肯定不能叫A,但是现在我们先用用它来占位置啊,先占位置一保存,那现在我是不是有一个行参了,你有一个行参,你传了一个食参,那这回还报不报错了,我们这一直行走一个你好是不是就行了,哎,你好,行了啊,这A是什么先不管啊,但是现在先先你先拿A代替,待会我们来起有意义的名啊,那现在我用PE调hello c hello是不是掉了,然后我这再掉一个什么呀?诶再调一个p2.1个c hello行不行啊,一保存一执行是不是都掉了,哎,都掉了,所以注意啊,我们在这个类当中可以去定义变量,还有什么呢?还有这个函数定义的变量我们称为什么呢?属性定义的函数我们称为什么呢?称为方法啊,那在这我们来总结一下,来总结一下。
20:39
在类,在类的这个代码块中,哎,我们可以什么呢?哎,我们可以定义叫什么呀?哎定义变量和函数啊函数那我们说什么呢?哎,我们这个变量会什么呢?会成为我们这个什么呀?哎,会成为我们这个该类实例的一个什么呢?哎,公共属性啊属性所有的哎该类实例啊,注意你得是该类实例,你这是我定义的是person,你用personon能你personon括号这种能访问,你说我这来一什么呀,我这来一个这个哎,S等于str,我这来一个hello,这玩意儿S能不能访问啊,不能访问,S是string的实例,它没有这个say hello你是不是就调不了啊,所以只能是该类实例,你得是通过person这个类创建的对象才可以访问,通过别的类创建的,你是访问不了的啊,该类实例才能访问啊,所以注意变量会成为该类实例的公共属性,所有该类实例都可以什么呢都。
21:39
可以通过我们这个对象。点什么呢?属性名的这个形式访问啊,属性名的形式访问。哎,那什么呢?还有函数呢,函数会成为该类,哎实例的一个什么呢?公共方法啊公共方法所有该类实例,哎都可以通过什么呢?对象点一个什么呢?方法名加括号,括号的这个形式干嘛呀?哎,调用我们这个方法啊,调用方法,那这个就是我们一个特点,所以注意啊,你在这里边写的都变成公共的,所有该类的实例都可以访问啊,都可以访问,那这里一定要注意,注意什么?这里边我们要说的是啊,注意我们定义方法时,我们方法调用时啊方法调用时哎必须哎默认。
22:34
会什么呢?哎,会传递一个参数啊,会传递一个参数,这个参数总会有啊,你即使在这儿你又定义参数了,它你就你这写一个一,它实际上会传两个参数,一个它的默认的,还有一个是一,你传一二,它会传什么呀?传三个参数啊,它实际参数总比你传的多一个啊因为它默认会传什么呀?第一个参数啊,第一个参数,所以注意啊,方法调用时啊,方法调用时我们这么写吧,哎,第一个参数,第一个参数有什么呢?哎,由我们这个解析器干嘛呀?诶自动传递啊,第一个参数由解析自动传递,所以什么呢?所以定义方法是干嘛呢?诶要至少。
23:16
哎,至少要什么呀,哎,定义一个刑参啊,一个行参,这1.1定要时刻注意啊,至少要定义一个刑参,那这个行参到底是什么,这A到底是什么,我们先不管它啊,A到底是什么我们先不它,那你现在要做的是先自己尝试定一下这个类啊,注意这个东西我们叫做属性,这个东西我们叫做方法,定义完了所有的实例都可以访问啊,自己来尝试去做一下这个事儿啊,我们来停一下。
我来说两句