封装是一种将抽象性函数接口的实现细节部分包装、隐蔽起来的办法。同时,它也是一种防止外界调用端,去拜访对象内部实现细节的手段,这个手段是由编程说话本身来供给的。
对象所有的内部表征对于外部来说都是隐蔽的,只有对象能直接与内部数据交互。起首,我们须要懂得公开(public)和私有(non-public)实例变量和办法。
公开实例变量
对于 Python 的类,我们可以应用 constructor 办法初始化公开实例变量:
- class Person:
- def __init__(self, first_name):
- self.first_name = first_name
下面我们应用 first_name 的值作为公开实例变量的变元。
- tk = Person('TK')
- print(tk.first_name) # => TK
在类别内:
如今我们不须要再对 first_name 赋值,所有赋值到 tk 的目标都将有类的属性:
如今我们已经学会若何应用公开实例变量和类属性。除此之外,我们还能治理公开部分的变量值,即对象可以治理其变量的值:Get 和 Set 变量值。保存 Person 类,我们欲望能给 first_name 变量赋别的一个值:
- tk = Person('TK')
- tk.first_name = 'Kaio'
- print(tk.first_name) # => Kaio
如上我们将别的一个值(kaio)付与了 first_name 实例变量,因为它又是一个公开变量,所以会更新变量值。
私有实例变量
和公开实例变量一样,我们可以应用 constructor 办法或在类的内部声明而定义一个私有实例变量。语废喔赡不合在于私有实例变量在变量名前面加一个下划线:
- class Person:
- def __init__(self, first_name, email):
- self.first_name = first_name
- self._email = email
上述定义的 email 变量就是私有变量。
- tk = Person('TK', 'tk@mail.com')
- print(tk._email) # tk@mail.com
这和定义办法有一些不合,这些办法作为了一种属性。如上当我们设定新的车轮数量,我们不须要将「2」作为参数设定,而是将 number_of_wheels 数值设定为 2。
我们可以拜访并且更新它,私有变量仅是一个商定,即他们须要被视为 API 非公开的部分。所以我们可以应用办法在类的定义中完成操作,例如应用两种办法展示私有实例的值与更新实例的值:
- class Person:
- def __init__(self, first_name, email):
- self.first_name = first_name
- self._email = email
- def update_email(self, new_email):
- self._email = new_email
- def email(self):
- return self._email
如今我们可以应用办法更新或拜访私有变量。
- tk = Person('TK', 'tk@mail.com')
- print(tk.email()) # => tk@mail.com
推荐阅读
完成这些后,启动 MultiBootUSB。 本教程介绍如安在一个 U 盘上安装多个 Linux 发行版。如许,你可以在单个 U 盘上享受多个现场版live Linux 发行版了。我爱好经由过程 U 盘测验测验不合的>>>详细阅读
本文标题:从变量到封装:一文带你为机器学习打下坚实的Python基础
地址:http://www.17bianji.com/lsqh/37927.html
1/2 1