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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。