面向对象--封装

一、前言

  Python面向对象的三大特性:继承、封装和多态。

  封装:在类中对数据的赋值、内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法。

二、封装

   在类中我们封装什么? 

2.1 封装属性和方法

class Person(object):

    country = 'CN'     # 公有属性

    def __init__(self, name, age, gender):    # 构造函数
        self.name = name     # 成员/普通 属性
        self.age = age
        self.gender = gender
        print('I am from %s, my name is %s.' % (self.country, self.name))

    def your_age(self):    # 方法
        print("I'm %s years old." % self.age)


p = Person('bigberg', 22, 'M')   # 对象
p.your_age()

  

  类中:封装了全局属性、普通属性、各种方法

  对象: 封装了普通属性的值

2.2 封装对象 

class F1(object):

    def __init__(self, n):
        self.N = n
        print('F1')


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


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


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

# 如何通过 o3得到 'bigberg'?

  之前我们已经了解了 self 其实代表的就是 对象本身,比如 类 F1中的 self 指的就是 o1。

  这样我们就能很快的知道  self.N=o1.N='bigberg'。

  那么我们需要做的就通过o3找到o1,所以需要这些步骤:

       o3 ---> o2 ---> o1

  同理可知:o3.b =  o2

       o2.a = o1

      所以最后结果是:   o3.b.a.N

posted @ 2017-07-25 15:17  Bigberg  阅读(581)  评论(0编辑  收藏  举报