python-面向对象(一),,面向对象编程(Obj


面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)

一、创建类和对象

面向对象编程是一种编程方式,此编程方式的落地需要使用 “类” 和 “对象” 来实现,所以,面向对象编程其实就是对 “类” 和 “对象” 的使用。

  类就是一个模板,模板里可以包含多个函数,函数里实现一些功能

  对象则是根据模板创建的实例,通过实例对象可以执行类中的函数

技术分享

class是关键字,表示类创建对象,类名称后加括号即可

二、面向对象三大特性

面向对象的三大特性是指:

封装继承多态

封装:

技术分享第一步 将内容封装到某处技术分享技术分享对象中封装了初始化__init__函数下面的变量,还有隐含地指向类的一个类对象指针,把类和对象关联起来。对象通过这个指针来寻找类下面的方法。当执行类下面的方法时,类的方法在去封装在类下面的变量中找需要的变量。第二步从某处调用被封装的内容

调用被封装的内容时,有两种情况:

通过对象直接调用通过self间接调用1、通过对象直接调用被封装的内容
class Foo:     def __init__(self, name, age):        self.name = name        self.age = age obj1 = Foo(‘wupeiqi‘, 18)print obj1.name    # 直接调用obj1对象的name属性print obj1.age     # 直接调用obj1对象的age属性 obj2 = Foo(‘alex‘, 73)print obj2.name    # 直接调用obj2对象的name属性print obj2.age     # 直接调用obj2对象的age属性
2、通过self间接调用被封装的内容

执行类中的方法时,需要通过self间接调用被封装的内容
class Foo:      def __init__(self, name, age):        self.name = name        self.age = age      def detail(self):        print self.name        print self.age  obj1 = Foo(‘wupeiqi‘, 18)obj1.detail()  # Python默认会将obj1传给self参数,即obj1.detail(obj1),所以,此时方法内部的 self = obj1,即:self.name 是 wupeiqi ;self.age 是 18  obj2 = Foo(‘alex‘, 73)obj2.detail()  # Python默认会将obj2传给self参数,即:obj1.detail(obj2),所以,此时方法内部的 self = obj2,即:self.name 是 alex ; self.age 是 78
综上所述,对于面向对象的封装来说,其实就是使用构造方法将内容封装到 对象 中,然后通过对象直接或者self间接获取被封装的内容。

继承

经典类 深度优先新式类 广度优先就近原则 前提:如 A多继承 B,C 在B,C都继承了D时 这个规律才有效否则新式类就会先去执行D里面的方法java、c# 不支持多继承 一个类只能继承一个类

技术分享

经典类 class:

class D:    def obj(self):        print "This is obj :D"class C(D):    def obj(self):        print  "This is obj :C"class B(D):    passclass A(B,C):    passa = A()a.obj()=========================This is obj :D

新式类 class(object): 就近原则

class D(object):    def obj(self):        print "This is obj :D"class C(D):    def obj(self):        print  "This is obj :C"class B(D):    passclass A(B,C):    passa = A()a.obj()========================This is obj :C

多态

Pyhon不支持多态并且也用不到多态,多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚“鸭子类型”。

python-面向对象(一)

相关内容

    暂无相关文章

评论关闭