python面向对象-1

python面向对象

面向对象的三大特征:封装,继承,多态
封装:根据职责将属性和方法封装到一个抽象的类中
继承:实现代码的重用,相同的代码不需要重复的编写
多态:(以封装和继承为前提)不同的子类调用相同的方法,产生不同的结果

在这里插入图片描述
1.Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法。
2.对象可以包含任意数量和类型的数据。


一、类和对象

1、类和对象得区别:类是对客观世界中事物得抽象,而对象是类实例化后的实体
2、类的定义:
(1)python使用class关键字定义一个类,类名的首字母一般要大写:
例如:

class Student#定义了一个Student类

(2)类的主体由一系列的属性和方法组成(在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。
例如:

class Car:   #小汽车
    def __init__(self, name, weight):
        self.name = name   # 名字
        self.weight = weight  # 重量
    def func(self):  # 打印重量和方法
       return "重量为"+str(self.weight)+"kg"+","+"在匀速行驶"
# python函数使用return返回值,如果不用return, 而用print输出值,这个函数默认还有一个返回值为None

3、对象的创建:
创建对象的过程称为实例化,当一个对象被创建后,包含的特性有属性和方法。例如:

if __name__=="__main__"      #当程序作为主程序运行
    car=Car()                #实例化:创建一个对象,创建了一个Car对象
    car.func()               #对象调用func()方法

4、类的属性和方法
(1)类的属性:一般分为公有属性和私有属性,默认情况下所有得属性都是公有的,如果属性的名字以两个下划线开始,就表示为私有属性,没有下划线开始的表示公有属性。 python的属性分为实例属性和静态属性,实例属性是以self为前缀的属性,如果构造函数中定义的属性没有使用self作为前缀声明,则该变量只是普通的局部变量,类中其它方法定义的变量也只是局部变量,而非类的实例属性。
(2)类的方法:类的方法也分为公有方法和私有方法,私有方法不能被模块外的类或者方法调用,也不能被外部的类或函数调用。
(3)内部类的使用:在类的内部定义类
内部类中的方法可以使用两种方法调用:
第一种:直接使用外部类调用内部类,生成内部类的实例,在调用内部类的方法
第二种:先对外部类进行实例化,然后再实例化内部类,最后调用内部类的方法
(4)__init__方法:构造函数用于初始化类的内部状态,为类的属性设置默认值
(5)类的专有方法:
在这里插入图片描述


二、继承

Python 同样支持类的继承,子类(派生类 DerivedClassName)会继承父类(基类BaseClassName)的属性和方法。BaseClassName(实例中的基类名)必须与派生类定义在一个作用域内。
继承就是让类和类之间转变为父子关系,子类可以直接访问(调用)父类的静态属性和方法。
在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类。
派生类的定义如下所示:

class DerivedClassName(BaseClassName):
    <statement-1>
    .
    .
    <statement-N>

多继承

Python同样有限的支持多继承形式。多继承的类定义形如下例:

class DerivedClassName(Base1, Base2, Base3):
    <statement-1>
    .
    .
    <statement-N>

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

继承的规则

1、子类继承父类的成员变量和成员方法
2、子类不继承父类的构造方法,能够继承父类的析构方法
3、子类不能删除父类的成员,但可以重定义父类成员
4、子类可以增加自己的成员

继承的作用

1、实现代码(功能)的重用,降低代码冗余
2、增强软件可扩充性
3、提高软件的维护性

方法重写

如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法。
super() 函数是用于调用父类(超类)的一个方法


三、多态

多态:不同的子类对象调用相同的父类方法,产生不同的执行结果

要实现多态有两个前提:
1.继承:多态必须发生在父类与子类之间
2.重写:子类重写父类方法

关于 super

在 Python 中 super 是一个 特殊的类
super() 就是使用 super 类创建出来的对象
最常 使用的场景就是在 重写父类方法时,调用 在父类中封装的方法实现

Python中多态的作用

让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数

Python中多态的特点

1、只关心对象的实例方法是否同名,不关心对象所属的类型;
2、对象所属的类之间,继承关系可有可无;
3、多态的好处可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强;
4、多态是调用方法的技巧,不会影响到类的内部设计。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值