联博接口:python中 _、__、__xx__() 区别及使用场景

admin/2020-06-30/ 分类:科技/阅读:

 1、接见权限(private、public)与继续方式(只有public继续)

  在面向工具编程语言中,类的属性与方式都市设置接见控制权限,从而知足我们的设计需求。一般而言,我们通常会将工具的属性设置为私有的(private)或受珍爱的(protected),简朴的说就是不允许外界接见,而工具的方式通常都是公然的(public),由于公然的方式就是工具向外界提供的接口。在Python中,属性和方式的接见权限只有两种,也就是公然的和私有的,若是希望属性是私有的,在给属性命名时可以用两个下划线作为开头,下面的代码可以验证这一点。

class Test: def __init__(self, foo): self.__foo = foo # 私有属性 # 界说私有函数,外界不可以直接接见,然则可以通过【_类名__函数名】去挪用私有函数 def __bar(self): print(self.__foo) print('__bar') def main(): """ test = Test('hello') # AttributeError: 'Test' object has no attribute '__bar' test.__bar() # AttributeError: 'Test' object has no attribute '__foo' print(test.__foo) """ # 使用以下这种方式就可以在类的外部挪用类的私有属性与方式  test._Test__bar() print(test._Test__foo) if __name__ == "__main__": main()

  在现实开发中,我们并不建议将属性设置为私有的,由于这会导致子类无法接见。以是大多数Python程序员会遵照一种命名老例,就是让属性名以单下划线开头来示意属性是受珍爱的,本类之外的代码在接见这样的属性时应该要保持稳重。这种做法并不是语法上的规则,单下划线开头的属性和方式外界仍然是可以接见的,以是更多的时刻它是一种表示或隐喻,让挪用者知道这是不应该直接接见的属性或方式,而且这样做并不影响子类去继续这些器械。

2、__xx__() 的使用

  • 在python中,方式名若是是__xx__()的话,那么就有特殊的功效,因此叫做“邪术”方式;
  • 当使用print输出工具的时刻,只要自己界说了__str__(self)方式,那么就会打印从在这个方式中return的数据;
  • __str__()方式需要返回一个字符串,当做这个工具的形貌。

 案例:界说一个类形貌数字时钟

import time class Clock(object): """数字时钟""" def __init__(self, hour=0, minute=0, second=0): """初始化方式 :param hour: 时 :param minute: 分 :param second: 秒 """ self._hour = hour self._minute = minute self._second = second def run(self): """走字""" self._second  = 1 if self._second == 60: self._second = 0 self._minute  = 1 if self._minute == 60: self._minute = 0 self._hour  = 1 if self._hour == 24: self._hour = 0 def __str__(self): """显示时间""" return 'd:d:d' %(self._hour, self._minute, self._second) def main(): clock = Clock(23, 59, 58) while True: print(clock) time.sleep(1) clock.run() if __name__ == '__main__': main() 

   注重:Python类中的那些邪术方式,如__str__、__repr__等,这些方式并不是私有成员哦,虽然它们以双下划线开头,然则他们也是以双下划线末端的,这种命名并不是私有成员的命名,

,

 1、接见权限(private、public)与继续方式(只有public继续)

  在面向工具编程语言中,类的属性与方式都市设置接见控制权限,从而知足我们的设计需求。一般而言,我们通常会将工具的属性设置为私有的(private)或受珍爱的(protected),简朴的说就是不允许外界接见,而工具的方式通常都是公然的(public),由于公然的方式就是工具向外界提供的接口。在Python中,属性和方式的接见权限只有两种,也就是公然的和私有的,若是希望属性是私有的,在给属性命名时可以用两个下划线作为开头,下面的代码可以验证这一点。

class Test: def __init__(self, foo): self.__foo = foo # 私有属性 # 界说私有函数,外界不可以直接接见,然则可以通过【_类名__函数名】去挪用私有函数 def __bar(self): print(self.__foo) print('__bar') def main(): """ test = Test('hello') # AttributeError: 'Test' object has no attribute '__bar' test.__bar() # AttributeError: 'Test' object has no attribute '__foo' print(test.__foo) """ # 使用以下这种方式就可以在类的外部挪用类的私有属性与方式  test._Test__bar() print(test._Test__foo) if __name__ == "__main__": main()

  在现实开发中,我们并不建议将属性设置为私有的,由于这会导致子类无法接见。以是大多数Python程序员会遵照一种命名老例,就是让属性名以单下划线开头来示意属性是受珍爱的,本类之外的代码在接见这样的属性时应该要保持稳重。这种做法并不是语法上的规则,单下划线开头的属性和方式外界仍然是可以接见的,以是更多的时刻它是一种表示或隐喻,让挪用者知道这是不应该直接接见的属性或方式,而且这样做并不影响子类去继续这些器械。

2、__xx__() 的使用

  • 在python中,方式名若是是__xx__()的话,那么就有特殊的功效,因此叫做“邪术”方式;
  • 当使用print输出工具的时刻,只要自己界说了__str__(self)方式,那么就会打印从在这个方式中return的数据;
  • __str__()方式需要返回一个字符串,当做这个工具的形貌。

 案例:界说一个类形貌数字时钟

import time class Clock(object): """数字时钟""" def __init__(self, hour=0, minute=0, second=0): """初始化方式 :param hour: 时 :param minute: 分 :param second: 秒 """ self._hour = hour self._minute = minute self._second = second def run(self): """走字""" self._second  = 1 if self._second == 60: self._second = 0 self._minute  = 1 if self._minute == 60: self._minute = 0 self._hour  = 1 if self._hour == 24: self._hour = 0 def __str__(self): """显示时间""" return 'd:d:d' %(self._hour, self._minute, self._second) def main(): clock = Clock(23, 59, 58) while True: print(clock) time.sleep(1) clock.run() if __name__ == '__main__': main() 

   注重:Python类中的那些邪术方式,如__str__、__repr__等,这些方式并不是私有成员哦,虽然它们以双下划线开头,然则他们也是以双下划线末端的,这种命名并不是私有成员的命名,

,

AllbetAPP下载

欢迎进入AllbetAPP下载(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

TAG:
阅读:
广告 330*360
广告 330*360
Sunbet_进入申博sunbet官网
微信二维码扫一扫
关注微信公众号
新闻自媒体 Copyright © 2002-2019 Sunbet 版权所有
二维码
意见反馈 二维码