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()

属性方法:把一个方法变成静态属性
  

    

 

把一个方法变成静态属性有什么用:


  

 

posted @ 2018-07-30 20:18  森式  阅读(133)  评论(0编辑  收藏  举报