码迷,mamicode.com
首页 > 其他好文 > 详细

面象对象

时间:2017-12-31 11:57:23      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:cat   公有   数据   body   ati   family   none   nat   wal   

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)
多态

 

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

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

继承

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

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

技术分享图片
 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()
继承

面象对象

标签:cat   公有   数据   body   ati   family   none   nat   wal   

原文地址:https://www.cnblogs.com/sshcy/p/8157217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!