Python面向对象1

Python支持多种编程方式:面向过程,面向对象,面向切面(装饰器部分)等

OOP思想

  • 面向对象的基本哲学:世界是由具有各自运动规律和内部状态的对象组成,对象之间的相互作用和通讯构成了世界
  • 唯一性:世界上没有两片相同的树叶,同样的没有两个相同的对象
  • 分类性:分类是对现实世界的抽象

面向对象特性

三大特性:封装,继承和多态

1. 封装

1.1.类的公有属性
类外面都可以访问的属性叫公有属性 X
属于这个类的对象都可以访问的属性叫公有属性 V

1.2 更改类的公有属性
I. 通过对象改(在自己的内存中创建了一个新的变量)
r1.nationality = CN
II. 通过类改
Role.nationality = JP
对象访问公有属性:对象的内存地址—>类地址(先在自己的内存地址查找,如果不存在就在类地址中查找) 类似与类方法继承

  • 类中封装了:字段,方法
  • 对象中封装了:普通字段的值
class F1(object):
    def __init__(self,n):
        self.N = n
        print('F1')

class F2(object):
    def __init__(self,arg1):
        self.a =arg1
        print('F2')

class F3(object):
    def __init__(self,arg2):
        self.b = arg2
        print('F3')

o1 = F1('Alex')
o2 = F2(o1)
o3 = F3(o2)

如何通过o3得到Alex: o3.b.a.N
封装不仅可以封装字符串,数字,还有对象等

2. 继承

继承的过程就是从一般到特殊的过程

class F1(object):
    def __init__(self):
        print("F1")

    def a1(self):
        print('F1a1')

    def a2(self):
        print('F1a2')

class F2(F1):
    def __init__(self):
        print('F2')

    def a1(self):       #--3--
        self.a2()       #--4--
        print('F2a1')   #--7--

    def a2(self):
        print('F2a2')

class F3(F2):
    def __init__(self):
        print('F3')

    def a2(self):        #--5--
        print('F3a2')    #--6--

obj = F3()     # --1--
obj.a1()       #--2--

F3
F3a2
F2a1

经典类与新式类

SchoolMember.__init__(self,name,age,sex) #经典类写法
super(Teacher,self).__init__(name,age,sex) #新式类写法
Python2 经典类深度查询,新式类广度查询
Python3 经典类和新式类都为广度查询

多重继承
class A(object):
    def __init__(self, a):
        print('init A...')            #--5--
        self.a = a                    #--6--

class B(A):
    def __init__(self, a):
        super(B, self).__init__(a)    #--3--
        print('init B...')            #--8--

class C(A):
    def __init__(self, a):
        super(C, self).__init__(a)    #--4--
        print('init C...')            #--7--

class D(B, C):
    def __init__(self, a):
        super(D, self).__init__(a)    #--2--
        print('init D...')            #--9--

d = D("d")              #--1--

init A...
init C...
init B...
init D...
参考文档:http://www.cnblogs.com/superxuezhazha/p/5737967.html

3. 多态

python的多态用一句话概括就是,有这种方法,并且传入相应的参数就行
参考文档: http://www.cnblogs.com/superxuezhazha/p/5737955.html

你可能感兴趣的:(Python面向对象1)