乐愚社区Beta

 编程语言  >  0基础学python(十一)

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()

  这个比较难解释,以后写代码用到会给大家好好讲一下


5条回帖
Walker  管理员   L12  评论于
(0)  回复(1) 1#
写的不错
P2P 楼主
发表在2020-11-09 回复
  
:)
a172393383  L1  评论于
(0)  回复(1) 2#
有没有相对的软件,需要准备啥啊大神,上您得课是不是得有啥准备呢?
P2P 楼主 :目前pycharm就行了
发表在2020-11-12 回复
  
:)
P2P 楼主  L3  评论于
(0)  回复(0) 3#
再讲一下注意点,过两天讲爬虫
还没注册帐号?快来注册社区帐号,和我们一起嗨起来!
关于本社区

集各类兴趣爱好于一身的轻量化交流社区,在此您可以和他人一起分享交流您觉得有价值的内容,社区鼓励大家发表原创内容,为社区添砖加瓦!

发帖奖励 → 社区版规 → 招聘版主 →
推荐版块
扫描二维码下载社区APP
回到顶部