00:00
好,接下来我们继续来说我们的诶类,我们来说一下我们这个类中的这些,诶属性,还有这个方法,我们再次给它总结一下啊,总结一下这保存一个文件,我们来13叫什么呢?诶类中的这个属性诶和我们这个方法啊,我们来系统的去总结一下它这些东西,那在这里我们先来定义一个类,诶定义一个类,随便写一个这个类是什么无所谓,那我们这就直接起一个名,我叫一个A吧,哎,让他继承一个all啊,咱们给它写上,你写不写都行啊,写不都行,那这里边我们来先说一下,我们说了我在类里边是不是可以直接去定义属性啊,诶比如说在这儿我来一个count等于一个零,那现在我是不是等于在类里边直接定一个变量,诶定一个变量,那这个我们说了,它是一个叫做一个什么呀,诶属性,那这种属性叫什么呢?我们这块再说一下,之前已经说过了,这个属性我们叫做一个什么呀,类属性啊类属性什么叫类属性直接在我们这个。
01:00
A中定义的这个属性是什么呀?哎,是类属性啊,是类属性,这个是我们说的一个类属性,那现在我们来看那类属性有什么特点,那首先我们来说类属性,我们能不能通过类去访问,诶,当然可以了,诶类属性可以什么呢?哎,可以通过类或什么呢?哎或类的一个实例访问到啊访问到什么意思?现在我们先来看我这一个count叫做零,在这儿我直接print一下,通过类访问,我直接来一个a.com,这个时候能不能访问到?哎,我们这一保存一执行,零是不是能访问到啊?哎,能访问到,那我们来说,假如说我这有一个A的一个实例,我直接来一个A,等于A这是一个实例,我通过这个实例能不能访问到?哎,我直接来一个A,点一个count的一执行,是不是也能访问到,哎,所以注意类中的属性,你通过什么呀?哎,通过这个类对象或者是实例对象都可以访问啊,通过类或者是类的实例都。
02:00
都可以访问到啊,都可以访问到,但是问题来了,我能不能改呀?哎,我能不能通过实例去改这个count,哎,比如说我这来一个A点一个count等于十,现在我是把count值改了呀,大家注意有没有改到这个count,有没有改到哎没有改到这个count,为什么?因为我这个操作实际是向这个实例里添加了一个抗的属性,这个时候我再用A点抗的实际上会干嘛?哎,实际上会导致我实例里边的属性覆盖掉我们类里边了,但是影没影响到我们类里边这个抗衡,诶实际上我们来看啊,这个是我们类的,我们来打印一下啊,这是A的,然后呢,这来一个这是实例的,我们小A啊表示实例这一执行,因为呃这报啊,这没有写逗号,这一保存,我们一执行,你来看A读到的还是零,而我们这个小A读到是什么呀?诶是十啊是十,也就是说我们这个改法有没有影响到类属。
03:01
啊,没有影响到类属性,但是我换一种改法,我不这么改了,我来什么呢?a.count啊a.count等于一个100,我现在是不是直接通过类去改啊,诶类去改这个时候我一保存,咱们来看是不是都变成100了,诶都变成100了,所以注意类属性可以通过类或实例访问到,但是什么呢?诶但是我们的类属性,哎只能什么呢?哎只能通过什么呀?哎类对象来修改,哎你只能通过类对象来修改,无法什么呢?无法通过我们这个实例对象修改,为什么?因为实例对象它只会添加一个属性,它会干嘛呀,把以前那个给它覆盖掉,只在当前对象那起作用,而类里边那个没有产生任何影响,所以注意类属性特点,它可以通过类或实例去访问的,但是它只能通过类对象来修改啊,类对象来修改,所以一般情况下我们是不用类属性的,除非有一些特殊情况,你这里边想放一些公共的值才会什么呀,使。
04:01
叫类属性啊,它就使用类属性,这叫做一个类属性,那说完类属性,接下来我们来说什么呀?叫做实力属性,那什么叫实力属性啊,诶其实看这儿我这儿是不是写了一个a.count等于十啊,那这个就是一个实力属性,诶我们说了通过,诶我们这个叫做一个实力属性啊,实力属性通过什么呢?诶通过我们这个类,诶通过我们这个实力对象,诶添加的这个属性属于什么呢?诶属于实力属性啊,属于实力属性,所以像这个a.com呢,现在这个啊A点抗就是一个实力属性,因为我们A是不是一个实力是一个对象啊,哎,我通过向对象里去添加的这个属性,那这里边我们再看我写这么一个直接定义一个我们来什么呢?来一个下划线,一个in it it,我们这写一个这个self self简写了,我直接来一个这个self,点一个这等于一个这个孙悟空啊孙悟空,那我问你这个孙悟空是不是一个实力属性啊孙。
05:01
悟空在这里实际上也是一个实力属性,为什么它也属于,因为self是表示我们当前对象啊,那通过添加的属性,实际上是不是也是添加到当前对象当中了,哎,所以self.name它也是一个实力属性啊,实力属性那好,那接着我们来说这个实力属性,那我们说了类属性可以通过实例去访问,也可以通过类去访问,那我们的实例属性的,那首先我们来说我通过a.name能不能访问到,哎,我们这一保存一执行,孙悟空是不是能访问到,哎,能访问到,但是我如果是大A,我们这个类点内能不能访问到。哎,通过类去访问能不能访问到,哎,我们这一执行干嘛了,报错了,告诉你A里边没有name这个属性,所以这块结论就已经出来了,叫什么呢?哎,我们这个实力属性。实例属性只能什么呢?诶只能通过我们这个实例对象来访问和这个什么呀修改,而我们的什么呢?诶类对象无法访问,哎,无法访问修改,就这么一个特点啊,所以注意实例对象只诶实例属性只能通过这个实例对象来访问啊,而什么呀,无法通过这个类对象来访问和修改啊,也就是说这个实例属性只属于某一个实例啊,某一个实例而不属于什么呀,哎,而不属于我们那个类啊这么一个区别,那我们开发的时候,什么时候用类属性,什么时候用实例属性,这东西已经说过了,如果这东西是公共的,所有的类都共,所有的实力都共享这一个,你就用类属性,如果这是私有的,就说只有我当前类去使用,当前对象去使用,那你就用什么呀,实力属性啊,这是类属性,还有实力属性,好说完类属性还有实力属性,我们这个,诶我们这个类里边还有一个东西叫做方法,哎,比如说我这来一个test,来一个这个self self呢,我们这。
06:52
直接print一个,我们这是什么呢?诶这是我们这个self方法啊,这是我们这,诶不是self方法,是我们这个叫什么呀?诶叫做一个test方法啊test方法写这么一个东西啊写这么一个东西,好,那这写完了,那这个东西我们叫什么?哎这个东西我们来说它叫什么呢?哎,它叫做实例方法,实例方法那什么叫做实例方法,那怎么去区,怎么去区分,那其实现在我们所用的像什么音译的,像什么test这些方法都是什么,都是实例方法,那我们怎么去辨识这个东西是不是实例方法,首先一点,实例方法肯定都是在我们类当中直接什么,哎直接定义的啊直接定义的,所以这里边什么叫实际实例方法,哎在类中定义啊第一个点在类中定义以什么呢?以这个self为第一个,哎,第一个参数的方法,哎,第一个参数的方法都是什么呀?哎,实例方法啊都是。
07:52
实例方法,所以这里边注意我们现在说的是些定义,以后我要说实例方法你要知道是什么,首先你的个类,你这个方法得是在类当中定义的,你写类外边那不管了,得是类当中定义的,并且它的第一个参数得是什么,得是self,这个才属于什么,才属于实例方法啊这个才属于实例方法,那注意了,实例方法的第一个参数是什么呀?哎,是self,实例方法在调用时,哎实例方法在调用时什么呢?哎,我们这个Python,哎会将我们这个调用的什么呀?哎,调用对象哎作为第一个参数,诶作为什么呢?诶作为我们这个self,诶传入啊,作为我们这个self传入,所以现在我们说了这种实例方法,像这个self,我们在调的时候,我们用不用传,哎不用传,那比如说现在我直接来一个啊,我这直接来一个实力已经有了,直接来一个A点一个test这。
08:52
B保存一执行是不是泰YTH森了就执行了,诶第一个参数我并没有传,而是什么呢?而是由Python自动给我传的,传的是谁,谁调的就传谁A调的传AA掉船A1A2掉的船A谁就传谁,我们这一保存,诶我们这打印一下test的啊,这应该是一个self啊self我们来看一下这个一导,诶你看是谁,是不是就是当前我的这个对象啊,诶就是当前我这个对象,那这个就是我们说的一个实例方法啊实例方法那注意了,我们说了实例方法注意了,我们要说一下实例方法,当然我们可以通过实例去掉,对吧,那我要问你的是我能不能通过泪去掉啊,哎类的泪去掉啊,哎可以,那注意啊实例方法哎可以通过我们这个,哎实例和什么呢?和泪去调用啊,可以通过实例和类去调用,当通过我们实例调用时,啊,当通过我们实例调用时,它什么呢?诶会自动诶将我们这个。
09:52
当前调用对象作为什么呢?诶作为我们这个selff传入啊,作为self传入而什么呢?诶当通过我们这个类调用时,诶调用时它不会什么,不会自动传递我们这个S什么意思,现在来看,我现在通过的是实例a.test调了,你会发现test传不传,哎传了,但是现在我如果改成用类去调,我直接来一个A点一个test,是不是直接通过类对象去调这个test呀,这个时候我这一执行走一个干嘛了,是不是报错了,告诉你test丢失了一个必须的参数,谁self,也就是说你通过类能不能掉,能掉,只不过它不会自动传self,也就说你通过泪调用的时候什么呢?哎,那此时我们诶必须诶手动传递什么呀,传递萨,至于传谁自己定,那现在我们这儿只能传谁了,传我们这A这个实例了,我们这一执行走。
10:52
你是不是就可以了,哎,就可以啊,所以注意实例方法可以,诶实例方法可以通过实例去掉,也可以通过什么呀类去掉,像这两种实际上是等价的,这两种是一模一样的啊a.T它干嘛呢?它等价于什么呢?a.T里边传一个A作为参数,这两个是一模一样的,没有任何区别,只不过这个相对来说麻烦一点,你得手动去传这个selff,而这个它自动就给你传了,但是本质上是一样的啊,本质上是一样的,所以之前我们所定义的,你只要看到是在类中定义,并且第一个参数是self,它就是什么呀?哎,就是实例方法啊,就是实例方法,好,那实例方法说完了,那接下来我们还有一些方法,我们没有说过的,哎,那我们接着来说,那你想想,有类属性,有实力属性,有实力方法,那就应该有什么,哎,是不是应该有一个类方法呀,哎,有一个类方法。
11:49
哎,有一个类方法,类方法什么特点啊,类方法什么特点,哎,那什么呢?方法的特点是首先我们要在内内部,诶在我们的这个内内部使用什么呢?诶使用一个艾特,我们叫做一个class me holdd叫做一个class method的来修饰的这个什么呢?诶修饰的方法属于什么呢?诶属于我们这个类方法啊属于类方法,所以这块注意,哎,那我们之前这个方法,我们前边是候没有装加任何的装饰器啊,哎加任何装置器,而这个时候我们来定义一个,比如说我这来一个TEST2 test2我先简单写一下print一个,诶这是什么呢?诶这是TEST2方法,哎TEST2方法,然后诶诶它是一个类方法啊类方法好,我们这写完了,那我现在是不是啊,现在不是我在前面得需要。
12:50
加一个装饰器,叫做一个艾特,一个class,一个这个method me OD,那现在这个就变成了一个什么呀,类方法啊类方法那注意了,它跟实例方法很像,实例方法我们是不是指定的第一个参数啊,那类方法我们也得指定一个参数,这个参数我们一般都叫一个CLS啊CLSCLS什么意思,是class的简写啊,Class简写为什么不用class,因为class是我们Python中的关键字,我们不能用,所以我们用CLS来去代替它啊,代替它那我们来说一下类方法的什么呢?诶类方法的第一个参数诶是什么呢?是CLS,诶它也会什么呢?也会被自动传递,它是什么呢?诶CLS就是我们当前的什么呀?类对象啊,就是当前的类对象,所以注意这个CLS是谁,这个方法是在哪个类里定义的CLS就是谁,在A类里定义的CLS就是A类。
13:50
类在B类里定义的CLS就是B,这个类在哪定义的CLS就是谁,我们也可以这来打印一下CLS啊CLS这一保存,那现在我们来看一下,我们调一下,那既然是类方法,我们是不是要通过类去调用了,哎我直接来一个test,二我们直接一调一保存,走一个,首先看方法执行了,然后传的参数是谁,是不是就是这个class,我们这个类就传进去了,哎就传去了啊所以注意这个是我们的一个类方法啊类方法那类方法和我们什么呀,和我们实例方法一个区别,哎类方法和我们实例方法的这个区别什么区别呀?哎,实例方法的这个第一个参数是我们这个self,而什么呢?而类方法的这个第一个这个参数是谁啊?诶是我们这个CLS,剩下的都一样啊,剩下都一样,并且你也可以通过CLS来干嘛呢?诶来操作我们类什么类属性,比如说我来一个CLS。
14:50
点一个这个countt,这一保存一执行,我们是不是看到这个count了,哎,就可以看到这个count了啊这个是我们说的一个类方法,哎,那问题就来了,刚才我们说了实例方法可以通过类去调用,也可以去通过实例去调用,那类方法行不行呢?哎,类方法也可以,哎类方法哎可以通过类去调用,哎也可以什么呢?也可以通过我们这个实例调用它干嘛呢?哎,它没有区别啊,没有区别,就说你这写一个a test2,或者写一个小a test2,这两个是什么呀?是一样的啊,是一样的,一直行是不是一样的呀?哎执行效果是一样的,都是传的那个class作为参数,所以注意实例方法它可以通过类去调用,也可以通过什么呢?也可以通过这个实例,这不是这个什么呀,类方法可以通过类去调用,也可以通过去实例去调用,这两个是等价的,它们的主要区别就是这个。
15:50
DS和self啊,实力的里边是。Self表示当前对象,而类方法里边的CSS表示的是当前类,那什么时候用class method,什么时候用实例方法,哎,就是说你需要self是用实力,需要累的时候用什么呀?诶用这个类啊,Class master,但是主要还是以实力为主啊,以实力为主好,然后还有最后一种我们方法叫做什么呢?哎,叫做一个什么呀,叫做一个静态方法。
16:19
哎,静态方法哎叫做一个sta method,那我们先说什么是静态方法,在类中使用我们这个at叫做一个sta static method,哎,来修饰的方法,哎属于什么呢?属于静态方法啊,静态方法来我们来定义一个,直接定义一个,我们叫做一个一个3TEST3,这里边你就不用传self了啊,我们先不写,然后我们这直接写一个print,我们这来一个这个TEST3 test3执行了,写完了,那这里边我们还要对它进行一个装饰,用谁装饰用我们这个sta,这个method s sta t static method,那现在它就是一个静态方法啊,就是一个静态方法,那注意了你会发现区别了我们的实例方法和类方法,我们是不是都需要传一个默认参数啊,哎,默认参数,那我们的静态方法干嘛呢?静态方法哎,不需要指定什么呀,诶任何的默。
17:19
认参数,诶,你需要参数,你就指定不需要,你可以不写啊,不需要你可以不写,也不会传递默认参数,那我们说了静态方法可以什么呢?可以通过类和实例去调用,哎,实力去调用,我们直接看效果啊,直接看效果在这儿我们直接来一个A点一个T3,哎,然后再来一个A点一个T3,两个我们直接掉了,一个是通过类掉了,一个是通过实力掉了,一直行是不是效果是一样的,哎,所以注意静态方法既可以通过类去掉,也可以通过实例去掉啊都可以去掉啊,都可以去掉,那这里边我们来看一下,那静态方法有什么特点呀?哎,那注意了静态方法。静态方法,哎,静态方法它基本上什么呀?哎,基本上它是一个和我们这个当前类无关的方法啊,无关的方法,甚至说其实它都严格意义上来讲,它都不是一个方法,我们说了方法跟这个函数的区别就是方法里边有一个默认参数self对吧,而函数里没有,那现在它数也没有了,哎,所以它跟函数基本上一样,其实就是一个函数,静态方法它就是一个函数啊,基本上是一个和类无关的方法,它只是一个什么呢?诶,它只是一个,诶保存到我们当前类中的什么呀?诶,当前类中的一个函数啊,只是保存到当前类中的函数啊,那这这个东西就像什么呢?哎,就像我们汽车里,汽车里我可以搁一个储物箱,诶对吧,搁一个储物箱用来存东西,但是这个箱子跟这个车有没有关系,没有关系,这个箱子。
19:00
我可以搁到其他的车里,搁到哪个车里都行,它跟我这个车没有任何关系,我这个车没有这个箱子是不是也可以正运行啊,哎也可以正常运行,所以这个静态方法是干嘛的,静态方法都是一般都是什么呀?哎静态方法哎一般都是一些什么呀?哎一些工具方法,哎和什么呢?和我们当前类诶无关啊,和我们当前类无关,但是说是无关,一般你说要一点关系也没有啊,也不会往这往这个类里边放,那静态方法是干嘛的,就是说哎我们说了静态方法就是一个函数,就是一个函数,那这个函数我搁哪都不好,你说我搁到全局里感觉挺别扭,没有地方搁,当你觉得这个方法没有地方搁的时候,你需要找一个地方存的时候,你就可以把它整成什么呀,整成一个静态方法,那比如说这个方法我现在就存到一个这个类里啊,静态方法和函数的区别就是什么呀,你必须得通过一个东西去掉,你可以通过类去掉,可以通过实去掉,不能什么呀,不能直接去掉啊,那这就是我们说的一个。
20:00
静态方法啊,静态方法以后我们用到的时候会会说,但是相对来说没有没有那么多,它其实你就当成是一个什么呀,保存到类里边的一个函数就行了啊,保存到类里边一个函数就行了,它不像我们之前那个函数没人管,这个呢,需要通过一个类去管理,去维护,叫做一个静态方法啊好,那这个就是我们说的类当中的属性和所有的方法,我们总结一下,一共说了这么几个是吧?哎,我们来总结一下我们说了什么呀?哎,说了这个类属性,属性,类属性还有什么呀?诶类诶还有叫做实力属性啊,实力属性还有什么呢?诶类方法,诶类方法还有还有实例方法,还有最后一个我们叫做一个静态方法,那这些东西的特点,首先这些一系列的都是可以通过什么呀,都是,诶那像这些除了实例属性,他们都是既可以通过类,还有实例是不是都可以访问呀,实例属性只能通过实例访问,不能通过类去访问,剩下的。
21:00
就是一些区别了啊,类属性实力属性类属于类,类属性属于类的,实例属性属于实例的,这不多说了,然后类方法第一个参数cfs实例方法第一个参数是self静态方法,没有第一个参数,你指定啥就是啥,它没有默认的参数,就是这么一个区别这块先去记一下,去区分一下,知道如何去定义这些方法,后边我们会有相应的这个什么呀,诶相应的这个这个这个DEMO我们来演示这个东西啊,来显示这个东西,好,这个我们来评一下。
我来说两句