wxyj3496 发表于 2020-2-9 20:08:57

第36-40节学习笔记——对象和类

本帖最后由 wxyj3496 于 2020-2-9 20:08 编辑

1 类,包含属性和方法,属性是变量,方法是函数。类的关键字是class,类名首字母一般大写

2 定义类,相当于画图纸、模具。类对象,相当于按照图纸生产一个产品。
3 类里面的self,相当于类对象的编号,我理解,当定义一个类对象时,对象名就代入self。
4 魔法方法——构造函数__init__()
   python里有一些魔法方法,使用双下划线包围。
其中__init__()叫构造方法,在定义类时,使用这个构造函数,在对象被创建时,自动调用,可以在实例化对象时传入参数。如下第1张图,定义一个对象后,需要调用方法传入参数,否则无法执行。如下第2张图,若使用__init__方法,直接在定义对象时,就可以传入参数。




5 python里没有公有和私有。任何方法和属性都可以通过‘.’进行访问。为了实现类似私有变量的特性,python内部采用了一种name mangling(名字改编)的方法实现,在变量或函数前面加上双下划线‘__'的方法实现。顾名思义,它是通过更改名字的方式实现的,它将变量或函数前面再加上下划线和类名,更改名字,实现私有。如图

6 如下图,类里的属性可以通过'类名.属性参数= 值’的方式统一更改,但是,当定义的对象更改属性后,'类名.属性参数= 值’这种方式就无效了。对象的属性将类的属性替代了。


7 继承
a.子类和父类定义相同的方法和属性,子类会自动覆盖父类对应的方法和属性
b.因为子类会覆盖父类,因此在使用__init()__时要调用未绑定的父类,即在__init()__执行“父类名.__init__(self)”,如下图,Fish是父类,Shark是子类

c.上面过还可用super函数替代父类名,这样不需要管父类名,直接调用即可,如下图。supper函数能够帮我们自动找到基类的方法

d.python支持多重继承,即一个子类可以继承多个父类,如下,但为避免混乱,不建议这样

e.有种方式叫做组合,如下所示,在__init__()初始化类,然后使用





Judie 发表于 2020-2-12 10:20:53

{:10_257:} 追更打卡
页: [1]
查看完整版本: 第36-40节学习笔记——对象和类