zoukankan      html  css  js  c++  java
  • 面向对象

    class Person:
        is_good_person = True # 类属性(优先找实例变量),虽然跟默认参数(__init__(self, name, sex, is_good_person = True))效果一样,但是更省内存
        def __init__(self, name, sex):
            self.name = name # 实例属性(静态属性),作用域是实例本身
            self.sex = sex
        def speak(self): # 类方法(动态属性)
            print(666)

    __init__  构造函数:在实例化的时候做一些类初始化的工作

    __del__ 析构函数:在实例释放、销毁的时候(删除实例或者程序退出)自动执行的,通常用于做一些收尾工作,如关闭一些数据库连接,关闭打开的临时文件

    vivi = Person('weiwei', 'girl')
    
    print(vivi.is_good_person)
    
    vivi.best_friend = 'Allen'
    
    # 虽然类本身没有这个属性,但这句话就相当于 self.best_friend = 'Allen',原因:
    # vivi = Person('weiwei', 'girl')  相当于 Person(vivi, 'weiwei', 'girl')
    # 所以类里面的 self.name = name 相当于 vivi.name = name
    # 同理 vivi.best_friend = 'Allen' 是有效的
    
    del vivi.best_friend # 删除实例变量

     私有属性,私有方法:只有内部才能访问的属性,方法,在属性名或方法名前面加两个下划线__

    类的继承

    class Hero(Person): # 继承Person类
        def speak(self): # 重构父类的speak方法
            Person.speak(self)
            print("{} is hero!".format(self.name))
    
    me = Hero('Allen', 25)
    me.speak()
    
    # 输出
    # 666
    # Allen is hero!

     经典类与新式类

    class Person: # 经典类
    class Person(object): # 新式类
    
    Person.__init__(name, age) # 经典类调用父类方法
    super(Hero, self).__init__(name, age) #新式类调用父类方法

     多继承的顺序是从左至右继承,实例化时会找到第一个构造函数执行,而不会执行每一个构造函数。

    规则:

      Python2 经典类是按深度优先来继承,新式类是由广度优先来继承;

      Python3 经典类和新式类都是按照广度优先来继承。

    多态

      一个接口,多种实现(作用:接口重用)。

    class Person(object):
        @staticmethod
        def person_speak(obj):
            obj.speak()
    
    class Hero(Person):
        def speak(self):
            print("I'm hero")
    
    class Badperson(Person):
        def speak(self):
            print("I'm bad person")
    
    h = Hero()
    
    b = Badperson()
    
    Person.person_speak(h)
    Person.person_speak(b) # 一个接口,多种实现

    # 输出
    # I'm hero
    # I'm bad person
  • 相关阅读:
    [Web安全] XXE漏洞攻防学习(中)
    [Web安全] XXE漏洞攻防学习(上)
    [转]kali中eth0网卡突然消失解决方案
    [漏洞复现]CVE-2018-4887 Flash 0day
    [漏洞复现]CVE-2010-2883 Adobe Reader 打开pdf电脑即刻中招
    [漏洞复现] CVE-2017-11882 通杀所有Office版本
    墨菲定律:Mac本硬盘坏了
    独立思考
    阅读书单
    2020未来小思考
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/9312229.html
Copyright © 2011-2022 走看看