面向过程(Procedure oriented)-函数调用函数
可以使用在函数中调用其他函数的方式设计我们的程序。这叫做面向过程的编程方式。它的特点是把程序分成多个步骤,用函数把这些不走一步步实现,使用的时候串行依次调用。
面向对象编程(Object Oriented Programming -OOP)
OOP把对象作为程序的基础,一个对象包含了数据,属性和操作数据的方法
In Python everything is an obiect
对象和类
1类:定义了一件事情的抽象特点,如共有的属性和方法
2对象:类的实例
使用类的优势
1继承inheritance,子类可以继承父类通用类型的属性和方法,也就是在父类或者基类中实现一次能被子类重用
2封装Encapsultion 对外部隐藏有关对象工作原理的细节
3多态polymorphism 也就是统一方法,不同的行为,指由继承而产生的相关但不同的类,其对象同一消息会做出不同的响应
属性和方法
对象= 属性+方法
条目基类
class Subject:
kind = None
def__init__(self,id,category_id,title)
##方法_init_ 隐式调用
self.id = id
self.category_id = category_id
self.title = title
def show_title(self):
return self.title
def update_title(self,title):
self.title = title
##跟函数的区别就是self
##self会把subject传进去,首写字母大写是类,小写是实例,也就是对象
继承
class Movie(Subject):
kind = "Movie"
##继承Subject类
覆盖(override)
从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫做方法的覆盖,也成为方法的重写。这个过程叫方法的覆盖,也成为方法的重写。在子类定义父类同名方法之后,父类方法被覆盖。
super()._init_(id,category_id,title)
方法解析顺序
http://dongweiming.github.io/Expert-Python/#31
http://zetcode.com/lang/python/oop/
https://docs.python.org/3/tutorial/classes.html
https://rszalski.github.io/magicmethods/
https://dbader.org/blog/python-dunder-methods