zoukankan      html  css  js  c++  java
  • Python基础之面向对象

    • 学习目录
    • 面向对象
    • 定义
    • 类实例化
    • 继承与重写

    0x01 面向对象(OOP)

    • 类(class)
      * 描述具有相同的属性和方法的对象集合
      * 定义了该集合中每个对象所共有的属性和方法
      * 对象是类的实例
    • object对象
      * 一个对象即是一个类的实例化后实例
      * 一个类必须经过实例化后,才能在程序内调用
      * 一个类可以实例化多个对象,每个对象亦有不同属性
    • 类变量
      * 类变量在整个实例化的对象中是公用的
      * 类变量定义在类中且在函数体之外
      * 类变量通常不作为实例变量使用
    • 数据成员
      * 类变量或者实例变量用于处理类及其实例对象的相关的数据
    • 方法重写
      * 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写。
    • 实例变量
      * 定义在方法中的变量,只作用于当前实例的类
    • 封装
      * 在类中对数据赋值、内部调用时对外部用户是透明的,使类变成一个容器,其中包含着类的数据和方法
    • 继承
      * 一个类派生出子类
      * 在父类里定义的属性、方法被子类继承
    • 多态
      * 一个接口, 多种实现
      * 基类中派生出不同子类, 且每个子类继承同样的方法名和同事对父类方法进行不同的实现
      * 编程是对具体对象继续抽象的过程
      * 多态是抽象画的表现形式

    0x02 定义

    • 定义
      * 面向对象很重要的载体
      * 类里面一般都是由多个函数组成,函数第一个参数默认是self
      * 若需要全局变量,在类的内部直接定义
      * 类的内部在调用函数或调用变量时,必须使用self.[变量/函数]
      * self代表类实例化后的个体
    • 格式
    class StuentName(object):
        pass
    
    • 原则
      * 重复代码降低水平,消耗资源
      * 可读性好、以扩张(经常变更)
    • 类定义
      ```
      class Pople(object): # 定义类
      age = 15 # 类变量
      def init(self, name, sex, age): # 构造函数,初始化
            # 构造函数: 实例化时对类进行初始化
            self.name = name            # 实例变量(静态属性),赋值给实例
            self.sex = sex
            self.age = age
        def bulk(self):                # 类方法,功能(动态属性)
            print(" {0}: wang wang wang!".format(self.name))
    
    # 实例化: 把一个类变成具体对象的过程
    d1 = Dog("Robin")                   # 实例化并传参(初始化类)
    d2 = Dog("Jone")
    d1.bulk()                           # 调用类方法
    d2.bulk()
    ```
    

    0x03 类实例化

    • 类实例化
      * 实例化类的首字母小写作为实例,然后实例化类
    • 类的定义及调用方式
      class Stuent(object): name = "Chow" def hello(self): print("Hello {0}".format(self.name)) # 调用变量,self.变量名 def python(self): self.hello() # 调用函数,self.函数 print("This is test.")
    • 实例化类
      studentName = Stuent();
    • 类的构造器
      * 类在初始化时,首先、必须要执行的函数
    • 类的构造(实例化类)
      class Status(object): def __init__(self, name): self.name = name print("init class Status") def hello(self): print("Hello {0}".format(self.name)) a = Status("Chow") # 实例化类 a.hello() # 调用类里面函数

    0x04 继承与重写

    • 继承
      * 多继承时, 若父类中都有相同方法。谁在前,即使用最前方法
    • 重写
      * 调用时, 先去找子类中方法,若子类中找不到对应方法,则取父类中查找
    • 继承及重写
      ```
      class Animal(object): # 动物类, 父类
      def init(self, name):
      print("现在正在初始化一个Animal类.")
      def run(self):
      print("Animal can run.")
      class Bird(Animal): # 鸟,子类,继承Animal类属性
      def init(self):
      print("鸟猫,Fly Fly Fly")
      def fly(self):
      print("Bird can fly.")
      class Cat(Animal): # 猫, 继承Animal类,并进行重写
      def init(self, name, sex):
      self.name = name
      self.sex = sex
      super(Cat, self).init(self.name) # 继承类并进行传参
      print("一只猫,miao miao miao")
      def jiao(self):
      print("miao miao miao.")
      def run(self): # 继承父类,并重写父类函数
      print("一只猫, 会上树来会跑路.")
      class BianYi(Cat, Bird): # 变异类
      pass
    # animal = Animal()              # 实例化
    # cat = Cat("mao", "man")        # 实例化
    # cat.run()                      # 调用方法
    bianyi = BianYi()
    ```
  • 相关阅读:
    Linux搭建iscsi服务,客户端(Linux&Win XP)挂载使用
    SecucreCRT安装与破解
    最全的HCIA-R&S实验笔记
    AtCoder Grand Contest 036
    Comet OJ CCPC-Wannafly & Comet OJ 夏季欢乐赛(2019)
    2019慈溪集训小记
    Codeforces Round #573 (Div. 1)
    Comet OJ
    Codeforces Round #576 (Div. 1)
    Codechef August Challenge 2019 Division 2
  • 原文地址:https://www.cnblogs.com/RobinChow/p/8878800.html
Copyright © 2011-2022 走看看