python--面向对象编程
面对对象程序
OOP把对象作为程序的基本单元,一个对象包括了数据和操作数据的函数
- 面对过程的程序:把程序视为一系列的命令***。面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度
- 面对对象的程序:把程序视为一组对象的***,而每个对象都可以接受其他对象发过来的消息,并处理这些消息。消息在各个对象之间传递
面对过程写法
std1 = {'name':'michael','score':98} std2 = {'name':'cznczai','score':100} def print_score(std): print('%s:%s' %(std['name'],std['score'])) if __name__ == '__main__': print_score(std1)
面对对象过程写法
Python类中的self到底是干啥的
在Python的解释器内部,当我们调用t.prt()时,实际上Python解释成Test.prt(t),也就是说把self替换成类的实例。
https://www.cnblogs.com/chownjy/p/8663024.html
https://www.cnblogs.com/wangjian941118/p/9360471.html
class student(object): def __init__(self , name , score): # 在python中self不是关键词 self在第一个位置是具有特殊性质 self.name = name self.score = score def print_score(self): print('%s : %s' % (self.name , self.score)) if __name__ == '__main__': a = student('Bart Simpson',59) student.print_score(a) a.print_score() # self指的是类实例对象本身
类和实例
面对对象:类(class)抽象 + 实例 (Instance)具体
- (object)表示该类是从哪个类继承下来的,如果没有合适的继承类,就使用object类,这是所有类最终的继承的类
class school(object): pass class student(school): # student 继承 school类 pass
__ init __
- 特殊方法“init”前后分别有两个下划线!!!
- 注意到init方法的第一个参数永远是self,表示创建的实例本身,因此,在init方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。
- 有了init方法,在创建实例的时候,就不能传入空的参数了,必须传入与init方法匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去
- 和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认参数、可变参数、关键字参数和命名关键字参数。
数据封装
- 面对对象编程的一个重要特点就是数据封装。z
[False + 1 = 0 ] [True + 1 =2]