python日记Day11——进阶语法(面向对象)

python日记——进阶语法(面向对象object oriented)

python的基础语法主要针对于面向过程,而要想真正精通python,还需要掌握python的进阶语法,即由面向过程转为面向对象。

一、类和对象

  • 类:抽象,用来描述具有相同的属性和方法的对象的集合;
  • 对象:具象,对象是类的实例;
  • 创建类:使用class关键字,class 之后为类的名称(首字母尽量大写)并以冒号结尾,类的方法与普通的函数有一个区别在于,,self 在定义类的方法时是必须有的(self名称可更改),它代表类的实例,虽然在调用时不必传入相应的参数;
class Student():
    school = "MIT" #属性
    age = 21 #属性
    def sayHi(self): #方法
        print("Hi")
        return  None
  • 创建实例对象:类的实例化类似函数调用方式;
  • 访问对象属性:采用a.b的方式。
tom = Student()
print(tom.school)
  • 变量作用域
    类变量:属于类自己的变量,类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,如:school、age;
    实例变量:属于实例自己的变量,可以借用类的变量,如:self.school。
  • 构造函数
    类在实例化的时候,执行一些基础性的初始化工作,init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法,可认为是在实例化的时候第一个被执行的函数:
def __init__(self, name, age):
    self.name = name
    self.age = age

二、面向对象的三大特征

  • 继承
    1、面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。通过继承创建的新类称为子类或派生类,被继承的类称为基类、父类或超类,子类可以有多个父类
    2、语法:class 子类名(父类名);
    3、issubclass(子类,父类)可用于检测是否是子类;
    4、构造函数的继承:在子类没有构造函数时,构造函数默认继承,一旦子类定义了构造函数,则不再调用父类构造函数;
    5、方法重写:如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法。
  • 封装
    1、封装就是对对象的成员进行访问限制;
    2、封装的三个级别: public、protected、private;
    3、private: 私有成员是最高级别的封装,只能在当前类或对象中访问;
    类的私有属性: __private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs;
    类的私有方法: __private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用 self.__private_methods;
    python的私有不是真私有,可以通过 对象名._类名__私有属性名访问。
    4、protected:受保护的封装在类中或子类中都可以进行访问,但是在外都不可以,在成员名称前添加单下划线即可;
    5、public:公有的封装实际上对成员不进行操作,均可访问;
    6、单下划线、双下划线、头尾双下划线说明
    头尾双下划线定义的是特殊方法,一般是系统定义名字 ;
    单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问;
    双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。
  • 多态
    1、多态就是同一个对象在不同情况下有不同的状态出现;
    2、多态不是语法,是一种设计思想;
    3、多态性:一种调用方式、不同的执行效果;
    4、Mixin设计模式:主要采用多继承方式对类的功能进行扩展(超人)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值