面象对象 基础篇

oop 面象对象

面向对象的特性:封装、继承、多态,利用 类、对象

class类: 对一类相同属性的对象抽象、蓝图、原型, 在类中定义这些对象都具备的属性

object对象: 类实例化后的实例

Encapsulation封装:对数据的赋值、内部调用对外部用户是透明的
作用:防止数据被随意修改,外部程序不需要关心对象内部构造,通过对外提供的接口直接访问即可

Inheritance继承:父类 ==> 子类 以最少代码的方式实现不同角色的共同点和不同点

Polymorphism

多态:对不同类的对象发出相同的消息将会有不同的行为(一种表现形式,多种形态)

 1 class Animal(object):
 2     def __init__(self,name):
 3         self.name = name
 4 
 5     def talk(self):
 6         raise "Error is raise"
 7 
 8 class Cat(Animal):
 9     def talk(self):
10         return "Mcow!"
11 
12 class Dog(Animal):
13     def talk(self):
14         return 'Woof! Woof!'
15 
16 d = Dog("d1")
17 c = Cat("c1")
18 
19 
20 # Animal.talk(d)
21 # Animal.talk(c)
22 
23 def animal_talk(obj):
24     print(obj.talk())
25 
26 animal_talk(d)
27 animal_talk(c)
多态

新式类与经典类

1、语法区别:

  class Person(object):    super   # 新式类

  class Person:   # 经典类

2、继承顺序的区别:(python2中能看到效果)

  广度查询:从左往右,先查找同一级的继承函数(新式类)

  深度查询:先把左边的继承都查完,左边都没有后在查右边的(经典类)

构造函数、析构函数、属性

def __init__(self): 构造函数、构造方法
def say(self): 类的方法

类 ----》 实例化 ----》 实例对象

__init__构造函数
self.name = name # 属性,成员变量

def sayhi() # 方法, 动态属性

class Role(object):
  nationality = "CN" # 公有属性
  def __init__(self,name):
    self.name = name
    self.__age = 18 # 私有属性
  def __del__(self):  # 析构函数,在函数执行完成后执行的函数
    print("del run...")

r1 = Role("caoy")

Role.nationality = "US" # 更改类的公的属性

公有属性:在类里面定义的属性、类中的函数方法也是公有属性,实例对其进行引用

私有属性:对外不可访问print(r1.__age),对内可访问
只想外面可访问但不可改:
def get_age(self):
  return self.__age
强制访问私有属性:
r1._Role__age

继承

继承: 继承的类称为“基类”、“父类”或“超类”
创建新类称为“子类”或“派生类”
一个类可以继承多个基类
通过“继承”和“组合”实现

实现方式: 实现继承(不需要额外代码)、接口继承(重新父类的方法)

多继承:
  2.7 经典类:深度优先 新式类:广度优先
  3.x 均是广度优先

 1 class Person(object):
 2 
 3     def __init__(self,name,age):
 4         self.name = name
 5         self.age = age
 6         self.sex = "noraml"
 7 
 8     def talk(self):
 9         print('Person is talking....')
10 
11 class WhitePerson(Person):
12     pass
13 
14 
15 class BlackPerson(Person):
16     def __init__(self,name,age,strength):
17         Person.__init__(self,name,age)
18         self.strength = strength
19 
20         print(self.name, self.age, self.sex, self.strength)
21 
22     def talk(self):
23         print("black person [%s] is blala..." % self.name)
24 
25     def walk(self):
26         print("is walking ...")
27 
28 b = BlackPerson("LiLei",30,"strong")
29 
30 w = WhitePerson("HanMei", 18)
31 
32 b.talk()
33 w.talk()
继承
posted @ 2017-12-31 11:12  ︻◣_蝸犇り~  阅读(246)  评论(0编辑  收藏  举报