-
学习目录
- 面向对象
- 定义
- 类实例化
- 继承与重写
- 面向对象
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()