面向对象编程:简称OOP。
是一种程序设计思想。oop把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。
在python中,所有数据类型都可以视为对象,也可以自定义对象。自定义的对象数据类型就是面向对象的类class的概念。
注意:属于面向对象编程语言的有 c++ 、 ruby 、 python 、 java
不支持面向对象的语言有 c语言
类和实例:
类:是抽象的模板;一类具有相同特征的事物的统称。
类里面有:①静态---属性(特征) ---变量 ②动态---方法(行为)----函数
定义类:通过class关键字,类型通常都是大写开头的
object ----- 表示该类是从哪个类继承下来的
通常如果没有合适的继承类,就使用object类,这是所有类都会继承的类
class Student(object):
pass
实例:根据类创建出来的一个个具体的'对象',每个对象都拥有相同的方法,单各自的数据可能不同。
类是实例的抽象化概念;实例是类的具体实例化体现。
创建实例:通过类名+()实现的 如 bar = Student()
也可以自由的给实例变量绑定属性 如 bar.name = Student()
由于类可以起到模板作用,因此,可以在创建实例时,把一些我们认为绑定的属性强制填写进去。通过一个特殊的_int_方法,在创建时,就把name、score等属性绑上去。
有了_int_方法,在创建实例时,就不能传入空的参数了,必须传入_int_方法匹配的参数,但self不需要传,python解释器会自已把实例变量传进去。
def Student(object):
def _int_(self,name,score):
self.name = name
self.score = score
实例化操作:1 - 类里面的变量 --- 属性
2 - 类里面的函数 --- 方法
3 - 创建实例 t1 = Tiger()
静态属性和实例属性:
1- 静态属性 ----- 也叫类属性 属于整个类的
用法 ---- ①类.属性 ②实例.属性
2 - 实例属性 ----- 定义在初始化方法 _init__里面
一般在创建实例时就给定
只要创建实例 --- def _init(self): 初始化方法肯定会调用
self 只是代表词,并不是关键字--可以替换,但不建议替换! 不能缺省
id(self)
实例化属性 --- 只能 实例.属性
self 这个实例的本身
静态方法和实例方法:
1 - 静态方法 ----- 属于整个类 类可以直接调用,不需要实例化 ---- 类.方法 / 实例.方法
用@stacticmethod修饰 只能修饰紧跟的那一个
2 - 实例方法 ----- 有self ---- 用法 实例.方法
取随机数: from random import randint
print(randint(0,5)) ----- 取 0 1 2 3 4 5 闭区间 随机
时间处理: import time
print(time.time()) ---- 单位是s秒 从1970算起
继承:1 - 继承关系可以是多个父类
2 - 重写 -- 在父类跟子类之间的一个多态的体现
3 - 在重写情况下,调用父类的方法
super(SouTiger,s1).roar()
super(子类类名,子类的实例名).roar()
4 - __name 属于私有属性
类的专有方法有:
① __int__ 构造函数 在生成对象时调用
② __del__ 析构函数 释放对象时使用
③ __repr__ 打印 转换
④ __add__ 加运算
⑤ __sub__ 减运算
⑥ __call__ 函数调用
⑦ __len__ 获得长度
⑧ __mul__ 乘运算
⑨ __mod__ 求余计算
⑩ __pow__ 乘法