| 
                         | 
                    
                                                0基础学python(十一) | 
                
| 
                        P2P
                                                     L3 
                                                •  2020-11-08                        • 回复 5                        • 只看楼主
                        • 举报
                           
                                                 | 
                
这节课继续讲类
首先讲一下继承,就是字面上的意思,例如你继承了你妈的脸长得很漂亮,类里面也有继承,我们以飞机大战为例,在一局游戏中我们会遇到很多boss,boss相对于炮灰飞机来说就很牛逼了,比如会上下左右移动,发射子弹会有一些特效
因为我们能遇到很多boss,那每个boss肯定有很多相同的行为,我们不可能说设定一个boss我们把那些相同的功能复制粘贴一遍,我们就可以设定一个父类让boss去继承那个功能
注意只有父类(基类)没有母类这个说法,一个类可以继承多个父类
class Animal(object):#定义一个父类
    def say(self):#父类的方法
        print('--1--')
class Dog(Animal):#定义子类
    pass
gou=Dog()#实例化
gou.say()#继承父类的方法调用
顶级的类一般在括号里写object,你继承了你老爸的智商,你老爸的智商又是继承你爷爷的,那你爷爷的智商继承谁的呢,这是个没完没了的问题啊,就当做继承你的祖先,而祖先就先当于顶级的类了
再讲一下多态,举个例子我和我朋友都喜欢美女,我喜欢大长腿,他喜欢丰满点的,对同一件事不同的人会有不一样的反应
class Cat():
    def talk():
        print('喵喵')
class Dog():
    def talk():
        print('汪汪')
c = Cat()
d = Dog()
c.talk
d.talk
再讲一下私有化,无法直接访问,就像你老爸有点小秘密不会告诉你一样 ??
class Test(object):
    def __init__(self):
       self.__num = 100#私有化,两个下划线开头加属性名或方法名
    def setNum(self, newNum):#改变值
        self.__num = newNum
    def getNum(self):#获取值
        return self.__num
但是我们可以通过上面的两个方法改变或者获取私有化属性的值,实际上私有化就是将这个属性或者方法进行了重命名直接调用的话就获取不到了(单下划线加类名加双下划线私有化属性名)
类方法和静态方法比较简单就不讲了
最后说一下当一个程序功能写好后,进行改进时尽量不要修改原代码,用闭包和装饰器进行升级
def test(number):
    print("--1--")
    def test_in(number2):
        print("--2--")
        print(number+number2)
    return test_in
这就是简单的闭包,在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包
def w1(fun):
    def inner():
        print("---正在验证权限----")
        if False:
            fun()
        else:
            print("没有权限")
    return inner
#就相当于f1 = w1(f1)
@w1
def f1():
    print("---f1---")
@w1
def f2():
    print("---f2---")
f1()
f2()
这个比较难解释,以后写代码用到会给大家好好讲一下
                                    