python学习day20 面向对象
为什么学python?
编程牛逼啊
python擅长的领域
web开发:Django\pyramid\Tornado
网络编程:Twisted
科学运算:SciPy\Pandas\Ipython
无论什么形式的编程,必须记住以下原则:
1、写重复的代码是非常不好的低级行为
2、写的代码会经常变更
面向对象:
1、面向对象的介绍、
核心特性:
类、class、对一类拥有相同属性的对象的集合,在类中定义了这些对象都具备的属性,类似,小猫、小狗、小猪、同属于动物类,
object 对象、一个对象即是一个类的实例化后的实例,一个类只有实例化后,才能在程序中调用,一个类可以实例化多个对象
Encapsulation 封装、在类中对数据的赋值、内部调用对外部用户是透明的,里面包含类的数据和方法
Inheritance 继承、一个类可以派生出子类,在这个父类定义的属性、方法自动被子类继承
Polymorplism 多态 一个接口,多种实现
2、基本语法
属性、方法、构造函数、
3、class role(): Role类名
n=123 #类变量
def __init__(self,name,roles): #self是用来接收对象
self.name=name#实例化变量(静态属性)的作用域就是实例本身
def shot ():#类的方法
4、实例化: r=role(“hzs”,“aa”)#r就是role类的一个实例
构造函数:__init__() 在实例化时做一些类的初始化工作
析构函数:在实例(对象)释放、销毁的时候执行的,通常用于做一些收尾工作,如关闭数据库连接、关闭打开的临时文件
def __del__(self):
封装:
私有方法、私有属性(变量):前面加两个"__"
self.__lifefff=fff q
def __dsa():
pass
继承:
class Peple:
def __init__(self,name,age,):
self.name=name
self.age=age
def eat(self):
print("%s is eating"%self.name)
def sleep(self):
print("%s is sleepping"%self.name)
class Man(Peple):
def piao(self):
print("%s is piaoing ....20S.....done")
def sleep(self):
Peple.sleep(self)#重构父类方法
print("man is sleeping")
ml=Man("NiHanYang",22)
ml.eat()
ml.sleep()
执行结果:
子类可以调用父类的方法和属性,但是子类间方法不能互相调用
静态方法:
class Dog(object):
def __init__(self,name):
self.name=name
@staticmethod #静态方法实际上跟类没什么关系了,变成了单纯的函数
def eat(self):
print("%s 吃 "%self.namem)
d=Dog("zhansan")
d.eat()
属性方法:把一个方法变成静态属性
把一个方法变成静态属性有什么用: