六 面向对象(中)

• 类的构造方法

• 类的访问权限

• 继承

• 多态


__init__构造方法

• 调用时间:在对象被实例化时被程序自动调用

• 作用:用于对象创建时初始化

• 书写格式:init前后分别是两个下划线

• 程序不显示定义init方法,则程序默认调用一个无参init方法

• 对象创建过程


类的构造方法

__init__

设置对象属性

def __init__(self.gender, variety,name):

    self.gender =gender

    self.variety = variety

    self.name = name

创建对象过程

wangcai = Dog("male", "golden", "wangcai")

yuanbao = Dog("female", "husky", "yuanbao")


 修改对象属性的方法

• 方法1:对象变量名.属性 = 新值 • 方法1的问题:

1)可能修改的属性值不合法

2)在类的外部可以随意修改类的内部属性 • 方法2:对象变量名.内部修改属性方法

私有属性

• 定义:__私有变量名

• 只能在类内部使用,类外部不能访问,否则报错

类的访问权限

私有方法

• 只能在类内部调用,在类的外部无法调用

• 定义私有方法在方法名前添加两个下划线

• 类内部调用私有方法要使用self.私有方法的方式调用


继承

在程序中,继承描述的是类中类型与子类型之间的所属关系,例如猫和狗 都属于动物

 单继承

• 子类继承一个父类,在定义子类时,小括号()中写父类的类名

• 父类的非私有属性、方法,会被子类继承

• 子类中方法的查找方式:先查找子类中对应的方法,如果找不到,再

到父类中查找

• 子类可以继承父类的属性和方法,也可以继承父类的父类的非私有属

性和方法,依次类推

• 在子类中调用父类的方法:ClassName.methodname(self)

• 重写父类方法

 子类对父类允许访问的方法的实现过程进行重新编写  在子类中定义与父类同名的方法

 优点:子类可以根据需要,定义合适的方法实现逻辑


 多继承

• object类是所有类的基类,在定义类的时候不需要显示的在括

号中表明继承自object类

• 多继承:一个子类可以继承多个父类

• 多继承定义方式:在类名后的括号中添加需要继承的多个类名

• 多继承中,如果多个类中有同名的方法,子类调用查找方法的

   顺序是按照小括号内继承父类从左到右的顺序查找,第一个匹

配方法名的父类方法将会被调用  多态

• 一个抽象类有多个子类,不同的类表现出多种形态




猜你喜欢

转载自blog.csdn.net/xsjzdrxsjzdr/article/details/80986110