一、前言
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