zoukankan      html  css  js  c++  java
  • 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, ...)         

  • 相关阅读:
    Combine 框架,从0到1 —— 4.在 Combine 中使用计时器
    Combine 框架,从0到1 —— 4.在 Combine 中使用通知
    Combine 框架,从0到1 —— 3.使用 Subscriber 控制发布速度
    Combine 框架,从0到1 —— 2.通过 ConnectablePublisher 控制何时发布
    使用 Swift Package Manager 集成依赖库
    iOS 高效灵活地配置可复用视图组件的主题
    构建个人博客网站(基于Python Flask)
    Swift dynamic关键字
    Swift @objcMembers
    仅用递归函数操作逆序一个栈(Swift 4)
  • 原文地址:https://www.cnblogs.com/panlei3707/p/9014463.html
Copyright © 2011-2022 走看看