实习日记 2020-01-09

今天开始了一个新的知识点:面向对象编程

系统提示:找不到对象。。。

内容包含:类、对象、命名规则、封装、单继承、多继承

类:创建对象
对象:由类创造出来的一个具体存在
由哪一个类创建出来的对象,就拥有在哪一个类中定义的 属性 和 方法
类只有一个,对象可以由很多个
不同的对象之间,属性可能会各不相同

类名要满足驼峰名法

使用类名()创建对象的时候,会自动调用初始化方法__init__
__init__方法是专门来定义一个类具有那些属性的方法

__str__方法必须返回一个字符串

在对象的方法内部,是可以直接访问对象的属性的
同一个类创建的多个对象之间,属性互不干扰

被使用的类,通常应该先开发。

在定义属性时,如果不知道设置什么初始值,可以设置为None
None关键字表示什么都没有
表示一个空对象,没有方法和属性,是一个特殊的常量
可以将None赋值给任何一个变量

封装

下面是一个类的封装案例

私有属性和私有方法:

补充:伪私有属性和私有方法
在日常开发中,不要使用这种方式,访问对象的 私有属性 私有方法
Python 中,并没有 真正意义私有
在给属性、方法命名时,实际是对名称做了一些特殊处理,使得外界无法访问到
处理方式:在名称前面加上 _类名 => _类名__名称

单继承

如果不使用继承,开发下面所示的案例,会产生大量的重复代码

下面是继承的案例:

可以这么说:

Dog 类是 Animal 类的子类,Animal 类是 Dog 类的父类,Dog 类从 Animal 类继承
Dog 类是 Animal 类的派生类,Animal 类是 Dog 类的基类,Dog 类从 Animal 类派生

继承的传递性

如果原本父类封装的方法无法满足需求,可以重写方法:

如果重写方法后,还需要包含父类的方法,使用super(),调用原本在父类中封装的方法

比较尴尬的是,公司机器的环境是Python 2.7,方法重写不支持super(),要用 父类名.方法(self)

父类的私有属性和私有方法,子类中无法直接访问。但是如果父类中使用公有方法去调用,则可以使用子类间接调用父类的私有属性和私有方法:

多继承

多继承可以让子类对象,同时具有多个父类的属性和方法

开发时,如果父类之间存在同名的属性或者方法,为了防止产生混淆,应该尽量避免使用多继承。

 

致谢:黑马Python教程

《实习日记 2020-01-09》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注