资讯专栏INFORMATION COLUMN

python中的特性管理模式详细说明

89542767 / 423人阅读

  本文关键阐述了python中的特性管理模式,主要包含私有属性和特性局限-__slots__方式,原文中阐述了python中怎样去声明变量的基本知识,必须的小伙伴可以借鉴一下


  一、私有属性


  Python并没真正意义上的民营化适用,但可以用下横线获得伪私,其中一项大部分Python编码都遵照的好习惯:含有下横线,作为前缀的名字应被称作非公开的API中的一部分(不论是函数公式、方式或是数据成员)


  python中私并无法实现真正意义上的私,只不过是在储存属性情况下改了一个名称,在外部不能直接方式


  私有属性主要表现为:


  _参数名:声明式私有属性


  __参数名:_类名+私有属性名


  classAttributes:
  attr=100
  #声明式私有属性
  _attr2=999
  #_类名+私有属性名
  __attr3=888
  print(Attributes.attr)
  print(Attributes._attr2)


  双下划线的私有属性,去启用时,并没__attr3这一属性名,用dict特性,去查询特性词典看看:

01.png

  能够看见是双下划线的私有属性是:_类名+私有属性名


  二、特性局限-__slots__方式


  界定过slots属性来局限类案例的特性,只有关联slots特定的特性,不可以加上slots以外的特性


  加上slots以外的特性,就会直接出错


  classDemo:


  应用__slots__给目标做特性局限,只有加上特定特性name,age


  __slots__=['name','age']
  m=Demo()
  m.name=111
  m.age=18
  print(m.name,m.age)
  前去加上特定特性以外的特性
  m.sex=男


  执行结果:


  出错:AttributeError:‘Demo’objecthasnoattribute‘sex’目标Demo并没有‘sex’这一特性

02.png

  三、python中怎样去声明变量


  词法:主要参数,属性种类


  比如:a:int=[11,22,3]主要参数a,为非int,数值[11,22,3]


  python中能够声明变量或参数种类,但实际上执行命令一般不会去校检种类


  a:int="python"#设定的为int种类,可是传值为字符串类型
  b:str=11#设定的为字符串类型,可是传值为int种类
  c:list={11,22,33}#设定的为列表,可是传值为词典
  print(a,b,c)#==========》依然可以实行打印出来
  #函数参数的类型声明:
  defwork(name:str,age:int):#设定的为字符串类型和int种类
  print('name的数值',name)
  print('age的数值',age)
  #实际传参一个列表,一个词典
  work([11,22,33],{'a':1,'b':2})


  执行结果:

03.png

  四、python中的有关特性


  __getattr__方式:


  使用方法:获得特性,特性不会有时开启的办法


  独特步骤:当去获得特性时,先实行__getattribute__去看是否有特性,有就回到,假如没有的话去行动__getattr__方式,回到特性不会有


  getattribute(self,item):


  使用方法:特性浏览开启的魔术师方式,搜索特性时,首位时间能启用此方法


  setattr(self,key,value):
  使用方法:设定属性方式,设定特性时,启用此方法设定特性
  __delattr__方式:
  使用方法:在del删除特性时开启,删除属性方式
  classMyDemo(object):
  def__getattribute__(self,item):
  """
  特性浏览开启的魔术师方式
  :paramitem:获取的属性名
  :return:获取到的属性值
  """
  print("您要获得的特性为:",item)
  value=super().__getattribute__(item)#继承父类
  returnvalue
  def__setattr__(self,key,value):
  """
  设定属性方式
  :paramkey:属性名
  :paramvalue:属性值
  :return:
  """
  print("您要设定的属性名{},属性值为:{}".format(key,value))
  super().__setattr__(key,value)
  def__delattr__(self,item):
  """
  删除属性方式
  :paramitem:属性名
  :return:
  """
  print("您要删除的特性为:",item)
  super().__delattr__(item)
  def__getattr__(self,item):
  """
  获得特性,特性不会有时开启的办法
  :paramitem:
  :return:
  """
  print("获得的特性{},不会有".format(item))
  return99
  m=MyDemo()
  print("*************************特性设定******************************")
  #特性设定
  #设定特性方式一:
  m.aa=999
  m.name='musen'
  #设定特性方式二:setattr方式:
  setattr(MyDemo(),'age',18)
  print("************************获得特性*******************************")
  #获得特性
  #方式一:
  print(m.aa)
  print(m.name)
  #方式二:getattr方式
  print(getattr(m,'name'))
  print("************************删除特性********************************")
  #删除特性
  #方式一:
  delm.aa
  #方式二:delattr方式
  delattr(m,'age')


  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130282.html

相关文章

  • 可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI

    摘要:私有仓库是,并在中运行。不要使用或为主机名注册表服务需要由外部客户端访问或,默认为用于访问和令牌通知服务的协议。打开或关闭,默认打开打开此属性时,准备脚本创建私钥和根证书,用于生成验证注册表令牌。 上一篇文章搭建了一个具有基础功能,权限认证、TLS 的私有仓库,但是Docker Registry 作为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是缺失的,还有什么 Docker...

    沈俭 评论0 收藏0
  • API例子:用Python驱动Firefox采集网页数据

    摘要:开源即时网络爬虫项目将与基于的异步网络框架集成,所以本例将使用采集淘宝这种含有大量代码的网页数据,但是要注意本例一个严重缺陷用加载网页的过程发生在中,破坏了的架构原则。 showImg(https://segmentfault.com/img/bVyzAX); 1,引言 本文讲解怎样用Python驱动Firefox浏览器写一个简易的网页数据采集器。开源Python即时网络爬虫项目将与S...

    Harriet666 评论0 收藏0
  • Python猫荐书系统之四:《Python源码剖析》

    摘要:以下内容仅针对版书籍,等新版上市后,荐书栏目会对两版的差异跟进介绍。当然,后续其它荐书的书目,也很有可能会送福利,一样不容错过。 showImg(https://segmentfault.com/img/bVbjIxq?w=6000&h=4000); 大家好,新一期的荐书栏目如期跟大家见面了。 先来看看今天的主角是谁:《Python源码剖析——深度探索动态语言核心技术》,2008年出版...

    xiao7cn 评论0 收藏0
  • Python猫荐书系统之四:《Python源码剖析》

    摘要:以下内容仅针对版书籍,等新版上市后,荐书栏目会对两版的差异跟进介绍。当然,后续其它荐书的书目,也很有可能会送福利,一样不容错过。 showImg(https://segmentfault.com/img/bVbjIxq?w=6000&h=4000); 大家好,新一期的荐书栏目如期跟大家见面了。 先来看看今天的主角是谁:《Python源码剖析——深度探索动态语言核心技术》,2008年出版...

    simpleapples 评论0 收藏0
  • 自制小工具大大加速MySQL SQL语句优化(附源码)

    摘要:如果语句中使用了子查询集合操作临时表等情况,会给列带来很大的复杂性。会递归执行这些子查询,把结果放在临时表里。查询优化器从中所选择使用的索引。该字段显示了查询优化器通过系统收集的统计信息估算出来的结果集记录条数。 引言 优化SQL,是DBA常见的工作之一。如何高效、快速地优化一条语句,是每个DBA经常要面对的一个问题。在日常的优化工作中,我发现有很多操作是在优化过程中必不可少的步骤。然...

    Yu_Huang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<