python的面向对象三大特性,面向对象 Python

  python的面向对象三大特性,面向对象 Python

  目录1。类2的私有属性。类的方法2.1类的私有方法2.2类的私有方法:

  1.class __private_attrs的私有属性:两个下划线开始,声明该属性是私有的,不能在类外使用或直接访问。自我。__private_attrs在类内的方法中使用时。示例:

  #!/usr/bin/python3

  类JustCounter:

  __secretCount=0 #私有变量

  Count=0 #公开变量

  定义计数(自身):

  自我。__secretCount=1

  self.publicCount=1

  打印(自我。_ _秘密账户)

  counter=JustCounter()

  counter.count()

  counter.count()

  打印(计数器. publicCount)

  打印(计数器。__secretCount) #报告了一个错误,该实例无法访问私有变量。执行上述程序的输出结果是:

  一个

  2

  2

  回溯(最近一次呼叫):

  模块中第16行的文件“test.py”

  打印(计数器。__secretCount) #报告错误,实例无法访问私有变量。

  attribute error:“just counter”对象没有属性“__secretCount”

  2.类的方法在类内部,def关键字用于定义方法。与一般的函数定义不同,类方法必须包含参数self,这是第一个参数。self表示该类的实例。

  self的名字不是规定死的,这个也可以用,但是按照约定用self更好。

  2.1 class _ _ Private _ method的私有方法:以两个下划线开头,声明这个方法是私有方法,只能在类内部调用,不能在类外部调用。自我。_ _私有_方法.该类的私有方法示例如下:实例(Python 3.0)

  #!/usr/bin/python3

  课程网站:

  def __init__(自身,名称,url):

  self.name=name # public

  自我。__url=url #私有

  定义谁(自己):

  打印(姓名: ,自我名称)

  打印( url:,自身。__url)

  Def __foo(self): #私有方法

  打印(“这是一个私有方法”)

  Def foo(self): #公共方法

  打印(“这是一个公共方法”)

  自我。__foo()

  X=Site(菜鸟教程, www.runoob.com )

  X.who() #正常输出

  X.foo() #正常输出

  X.__foo() #错误输出结果:

  名称:菜鸟教程

  网址:www.runoob.com

  这是一个公共方法。

  这是一个私有方法。

  回溯(最近一次呼叫):

  模块中文件 class5.py 第22行

  X.__foo() #给出错误

  attribute error:“Site”对象没有属性“__foo”

  2.2类的专有方法:__init__:构造函数,在生成对象时调用。

  __del__:析构函数,在释放对象时使用

  __repr__:打印,转换

  __setitem__:根据索引赋值

  __getitem__:通过索引获取值。

  __len__:获取长度

  __cmp__:比较操作

  __call__:函数调用

  __add__:加法运算

  __sub__:减法

  __mul__:乘法

  __truediv__:除运算

  __mod__:余数运算

  _ _ pow _ _:幂运算符过载

  Python也支持运算符重载,我们可以重载类的专有方法。例子如下:

  #!/usr/bin/python3

  类别向量:

  def __init__(self,a,b):

  self.a=a

  self.b=b

  def __str__(self):

  返回“Vector (%d,% d)%(self . a,self.b)

  def __add__(自身,其他):

  返回向量(self.a other.a,self.b other.b)

  v1=向量(2,10)

  v2=向量(5,-2)

  打印(v1 v2)上面的代码执行结果如下:

  向量(7,8)

  来自

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: