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()
```
原文地址:https://www.cnblogs.com/RobinChow/p/8878800.html