作家
登录

从变量到封装:一文带你为机器学习打下坚实的Python基础

作者: 来源: 2017-10-16 10:23:03 阅读 我要评论

封装是一种将抽象性函数接口的实现细节部分包装、隐蔽起来的办法。同时,它也是一种防止外界调用端,去拜访对象内部实现细节的手段,这个手段是由编程说话本身来供给的。

对象所有的内部表征对于外部来说都是隐蔽的,只有对象能直接与内部数据交互。起首,我们须要懂得公开(public)和私有(non-public)实例变量和办法。

公开实例变量

对于 Python 的类,我们可以应用 constructor 办法初始化公开实例变量:

  1. class Person: 
  2.  
  3.     def __init__(self, first_name): 
  4.  
  5.         self.first_name = first_name  

下面我们应用 first_name 的值作为公开实例变量的变元。

  1. tk = Person('TK'
  2.  
  3. print(tk.first_name) # => TK  

在类别内:

如今我们不须要再对 first_name 赋值,所有赋值到 tk 的目标都将有类的属性:

如今我们已经学会若何应用公开实例变量和类属性。除此之外,我们还能治理公开部分的变量值,即对象可以治理其变量的值:Get 和 Set 变量值。保存 Person 类,我们欲望能给 first_name 变量赋别的一个值:

  1. tk = Person('TK'
  2.  
  3. tk.first_name = 'Kaio' 
  4.  
  5. print(tk.first_name) # => Kaio  

如上我们将别的一个值(kaio)付与了 first_name 实例变量,因为它又是一个公开变量,所以会更新变量值。

私有实例变量

和公开实例变量一样,我们可以应用 constructor 办法或在类的内部声明而定义一个私有实例变量。语废喔赡不合在于私有实例变量在变量名前面加一个下划线:

  1. class Person: 
  2.  
  3.     def __init__(self, first_name, email): 
  4.  
  5.         self.first_name = first_name 
  6.  
  7.         self._email = email  

上述定义的 email 变量就是私有变量。

  1. tk = Person('TK''tk@mail.com'
  2.  
  3. print(tk._email) # tk@mail.com  

这和定义办法有一些不合,这些办法作为了一种属性。如上当我们设定新的车轮数量,我们不须要将「2」作为参数设定,而是将 number_of_wheels 数值设定为 2。

我们可以拜访并且更新它,私有变量仅是一个商定,即他们须要被视为 API 非公开的部分。所以我们可以应用办法在类的定义中完成操作,例如应用两种办法展示私有实例的值与更新实例的值:

  1. class Person: 
  2.  
  3.     def __init__(self, first_name, email): 
  4.  
  5.         self.first_name = first_name 
  6.  
  7.         self._email = email 
  8.  
  9.     def update_email(self, new_email): 
  10.  
  11.         self._email = new_email 
  12.  
  13.     def email(self): 
  14.  
  15.         return self._email  

如今我们可以应用办法更新或拜访私有变量。

  1. tk = Person('TK''tk@mail.com'
  2.  
  3. print(tk.email()) # => tk@mail.com 

      推荐阅读

      如何在一个U盘上安装多个Linux发行版

    完成这些后,启动 MultiBootUSB。 本教程介绍如安在一个 U 盘上安装多个 Linux 发行版。如许,你可以在单个 U 盘上享受多个现场版live Linux 发行版了。我爱好经由过程 U 盘测验测验不合的>>>详细阅读


    本文标题:从变量到封装:一文带你为机器学习打下坚实的Python基础

    地址:http://www.17bianji.com/lsqh/37927.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)