• Python3基础笔记---面向对象


    只是对一些新的知识的记录

    1、创建类

    class ClassName:
        <statement-1>
        .
        .
        .
        <statement-N>

    类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性。 __init__() 方法可以有参数

    2、方法 (类中叫方法,单独写交函数)

    定义一个名为 __init__() 的特殊方法(构造方法)

    def __init__(self):
        self.data = []

    类定义了 __init__() 方法的话,类的实例化操作会自动调用 __init__() 方法。

    self代表类的实例,而非类。self 永远是执行该方法的调用者

    类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

    3、继承

    class DerivedClassName(BaseClassName1):
        <statement-1>
        .
        .
        .
        <statement-N>

    需要注意圆括号中基类的顺序若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找基类中是否包含方法。

    BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:

    class DerivedClassName(modname.BaseClassName):

    当子类对象调用方法时,若子类中有,直接调用,比如f2()会使用子类中重写的方法,但当子类中没有时,就会去父类中寻找。

    class Base:
        def a(self):
            print('Base.a')
    
    class F(Base):
        def a1(self):
            print('F.a')
    
    class S(F):
        def b(self):
            print('S.b')
    
    obj = S()
    obj.b()
    obj.a()

    Python支持多继承

    class DerivedClassName(Base1, Base2, Base3):
        <statement-1>
        .
        .
        .
        <statement-N>

    需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

     

    需要注意如果他们有共同的基类,如果搜索到了L1中还没有这个方法,并不会去搜索Base,而是去搜索R1,R2,最后去搜索Base

    4、方法重写

    #!/usr/bin/python3
     
    class Parent:        # 定义父类
       def myMethod(self):
          print ('调用父类方法')
     
    class Child(Parent): # 定义子类
       def myMethod(self):
          print ('调用子类方法')
     
    c = Child()          # 子类实例
    c.myMethod()         # 子类调用重写方法
    super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法

    调用父类方法的两种方式:   super(类名 ,self).父类的方法(...)    or    父类名.父类中的方法(self, ...)         

  • 相关阅读:
    开始系统的研究区块链技术了
    基于Centos7的比特币源码编译
    WTForms
    flask-session
    抽屉之Tornado实战(5)--点赞与评论树
    零碎知识点
    flask信号
    MetaClass
    flask系列
    flask源码剖析--请求流程
  • 原文地址:https://www.cnblogs.com/panlei3707/p/9014463.html
Copyright © 2020-2023  润新知