面向对象编程
class类(新式类:class xx(obj):,经典类 class xx:)


构造函数 __init__(self,ret1,ret2...) 在实例化时做一些类的初始化工作
析构函数 __del__ (self): 在实例释放或销毁的时候,通常做一些收尾工作,如关闭打开的临时文件、关闭数据库等
类变量
实例变量(静态属性)
方法(动态属性)


object对象
encapsulation 封装
私有方法
私有属性
Inheritance 继承
继承
多继承
python2x上
新式类 广度优先(从左到右,先走同级)
经典类 深度优先(竖向查询,先走最深级)
python3x上
都是广度优先
Polymorphism 多态
同一个接口多种实现

把一个类变成一个具体对象的过程叫实例化
实例想调用类里面的方法是把自己变成变量传给类,所以def(self)中的self即是定义的变量
实例变量的作用域就是实例本身
当实例变量与类变量名相同时,先找实例变量。



-----------------------------类的初体验————————

class Dog(0bject):
  n = 123 #类变量,大家共有的属性,节省开销
  name = '我是类name:alex'
  n_list = []

  def __init__(self,name,weight): #构造函数,当调用析构函数是进行实例化
    self.name = name  #实例变量(静态属性)
    self.__weight = weight #私有属性,他人无法从外部访问的属性,可以从内部写一个方法进行调用
  def __del__(self): # 析构函数,在实例释放或者销毁的时候,通常做一些收尾的事情 
    print('%s 离家出走啦' %self.name)
  def loss_weight(self,count):  #类的方法(动态属性)
    self.weight -= count
    print('今天%s的体重为 %s'%(self.name,count)
  def __bulk(self): #私有方法,无法从外部调用的方法
    print('wang wang wang')

d1 = Dog('小黑',100)

——————增:相当于新增了一个age属性,但是这个属性是在d1的内存里面,其他人没有这个新的属性

d1.age = 1 

——————改

d1.name = '三炮

——————删

del d1.name

 

d2 = Dog('小花',50)

d1.n_list.append('from d1')
d2.n_list.append('from d2')

print('Dog.n_list) 
>>>>>(from d1, from d2)

 

—————————————————类的继承——————————————

class People(object):
  def __init__(self,name,age):
    self.name = name
    self.age = age
    self.friend =  [ ]
  def eat(self):
    print('%s is eating .......'% self.name)
  def sleep(self):
    print('%s is sleeping......‘% self.name)

class Relation(object):
  def make_frient(self,obj):
    print('%s make friends with %s'%(self.name,obj.name))
    sef.friends.append(obj)

class Men(People):
  def __init__(self,name,age,money):
    super(Men,self).__init__(name,age)  #继承了People,又重构属性
    self.money = money
  def play_baseball(self):
    print('%s is play baseball now'% name)

class Women(Relation,People): ###  多继承,广度优先,当类里面无构造函数,从左到右进行寻找构造函数进行实例化
  def birth_baby(self):
    print('%s is birth baby right now'% name)

 

————————————————多态-————————

class Animal:
  def __init__(self,name):
    self.name = name

  @staticmethod #多态实现过程
  def talk(obj):
    obj.talk()

 

class Cat(Animal):
  def talk(self):
    print("miao')

class Dog(Animal):
  def talk(self):
    print("wang')

  

 

posted on 2018-11-08 11:38  FakeZIo  阅读(118)  评论(0编辑  收藏  举报