本文实例讲述了Python面向对象部分知识点。分享给大家供大家参考,具体如下:
<>强面向对象:强>
世间万物,皆可分类。- - - - - - - - - - - - - - - - - - - - - -手机《- - - - - - - - - - - - - - - -某一个分类
世间万物,皆为对象。- - - - - - - - - - - - - - - - - - - - - -我的手机《- - - - - - - - - - - -有具体指向
只要是对象,就肯定属于某种品类。
只要是对象,就肯定有属性。
类的相同点一起写,不同点分开写。
1. python类中自我的
通常函数的执行方式为:
Python类中方法却不是这样执行的,
而是在实例化对象的同时也将此时的对象名称传入。然后在类中__init__需要一个参数接受该对象,故选用自我,自我代表的是当前对象的引用,指向的是同一块内存地址,所以不需要使用返回返回值。
2。为什么类中的方法最少有一个自我参数?
这是由于类中的方法是类内部共存(共享)的,不像其他字段属性每次都在内存中复制得有,但是得知道每次调用该方法的对象是谁,需要将调用这个方法的对象传递到该方法中,故需要一个自我接收该对象。在底层是通过- - - - -》类。方法(对象名)实现该过程的。最终的实现是谁调用这个方法,谁就把自己传递给该方法。类名。方法名(类的对象)
r=角色(“WFB”),角色是一个类,类中有一个got_shot()方法。
3。在构造函数中初始化:在内存中开辟一块空间,然后将一些值进行存储。对于没有在构造函数中初始化的方法是在类的内存当中的,而不是在实例的内存空间里。
4。python类变量和实例变量
类变量既可以通过实例也可以通过类来访问,这是因为访问顺序是默认先访问实例的,若实例中没有则来访问类的。
实例变量是可以增加的,也是可以删除的,体现为:
4.1增加
4.1.1 在类初始化时是通过构造函数__init__()中接收的自我参数然后进行赋值,如下
类角色: def __init__(自我、名称): #在实例化时做一些类的初始化的工作 self.name=名字#实质为r1.name=名字实例变量(静态属性),作用域就是实例本身 >之前实质为:
r=角色(“wfb”)===在r=角色(r,“wfb”),然后通过r.name=名字在构造函数中进行赋值。
4.1.2 在类实例后单独增加,现在新增一个实例变量范围只针对该实例。
例如:
r=角色(“wfb”) r.gender="男" >之前上述两者实质是一样的,只是赋值时间有区别,一个是在类在实例化(调用构造函数)时赋值。一个是在实例化之后再在赋值操作。同样可以达到为某实例增加属性的目的。
4.2删除,,
删除实例变量(只是针对当前的对象)。
方式为=祝辞
德尔r.name >之前这样该实例就没有了该变量,但是不会影响其他的实例变量。
5。在实例中是否可以改类中的类变量? ?
类角色: n="我是类变量” def __init__(自我、名称): #在实例化时做一些类的初始化的工作 self.name=名字#实质为r1.name=名字实例变量(静态属性),作用域就是实例本身 r1=角色(“wfb”) r1.n="我是修改后变量” 打印(沃特===% s %沃特)#=====在输出我是修改后变量 r2=角色(“WFB好”) 打印(r2.n===% s % r2.n) #======在输出为我是类类变量。 #先在实例中查找是否有n,没有则去查找类中是否有。 >之前总结:通过试验可以知道我们通过实例修改类中同名的变量,实质为是在该实例的内存中新增了一个与类变量同名的实例变量。其他实例来调用该类中的类变量时,其中类变量的值是没有发生变化的。
6。通过类是否可以直接修改类的的类变量? ?【类名。类变量==值】,
结论为:若实例中已有新增的与类变量同名的则变量值为实例中的变量值,否则则是修改后的类变量的值,这是由于访问顺序是默认先访问实例的,若实例中没有则来访问类的。
需要注意的是若变量是一个列表则修改一个影响全部,这是由于他们共用的是同一个内存地址。
Python面向对象部分知识点小结