11.9学习日志

(十六)None对象
  • None是一个特殊的常量,表示变量没有指向任何对象,可以将None赋值给任何变量,但不能创建NoneType类型对象
  • None和其他任何类型比较都会返回False
  • ==和is判断时,空列表,空字符串不会自动转成False

30 面向对象的三大特征 

(一)分类

封装,继承,多态

封装:隐藏对象的属性和实现细节,只对外提供必要的方法,通过“私有属性,私有方法”的方式,实现封装。

继承:让子类具有父类的特性,更容易增进代码

多态: 同一个方法调用由于对象不同实现行为不同

(二)继承

1.一个子类可以继承多个父类,类定义中没有指定父类,则默认父类是object类,object是所有类的父类,顶一个一些所有类共有的默认实现

父类名.init(self,参数列表)

子类不重写_init_,实例化子类,调用父类的_init_,重写则不会调用

class Person:
    def __init__(self,name,age):
        print("创建Person")
        self.name =name
        self.age = age
    def say_age(self):
        print("{0}的年龄是{1}".format(self.name,self.age))

class Student(Person):
    pass

s1 = Student("lmh",18)      #lmh的年龄是18子承父类
s1.say_age()

如果重写_init_要继承父类的构造方法,可以使用super关键字,也可以这样调用:

class Person:
    def __init__(self,name,age):
        print("创建Person")
        self.name =name
        self.age = age
    def say_age(self):
        print("{0}的年龄是{1}".format(self.name,self.age))

class Student(Person):
    def __init__(self,name,age,score):
        Person.__init__(self,name,age)      #重新写了构造函数,想调用父类的构造函数
        #super(Student,self).__init__(self,name,age)        #或者用这种方法
        self.score = score

s1 = Student("lmh",18,90)      #lmh的年龄是18子承父类
s1.say_age()

 2.类成员的继承和重写

成员继承:子类继承父类除构造函数以外属性和方法,包括私有属性和方法

方法重写:子类可以重新写父类已有的方法,这时父类的部分会被覆盖

3.重写_str_()方法

_str_()用于返回一个“对象的描述”经常用于print()方法,帮助查看对象的信息

4.多重继承

一个子类继承多个父类,会导致类的层次结构混乱,尽量少用

class 子类(父类1,父类2...)
    类体

5.MRO方法解析顺序

如果父类中有相同名字的方法,在子类没有指定父类名字时,解释器“从左向右”按顺序搜索

class 子类(父类1,父类2...)
    类体

如果子类没有一个方法,就先查看父类1的,父类1有就调用,没有再查父类2

6.super()获得父类的定义

super.方法名()调用父类的方法

(三)多态

多态是方法的多态,属性没有多态

多态的存在有两个必要条件:继承、方法重写

class Animal:
    def shout(self):
        print("动物叫了一声")

class Dog(Animal):
    def shout(self):
        print("小狗,汪汪")

class Cat(Animal):
    def shout(self):
        print("小猫,喵喵")

def animalShout(a):
    a.shout()       #会产生多态,传入对象不同,调用方法不一样

animalShout(Dog())      #小狗,汪汪
animalShout(Cat())      #小猫,喵喵

31 特殊方法和运算符重载

a = 20
b = 30
c = a+b
d = a.__add__(b)
print(c)        #50
print(d)        #50

每个运算符都对应特殊方法

32 特殊属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值