参考 https://www.runoob.com/python3/python3-class.html
class
类有一个名为 init() 的特殊方法(构造方法),该方法在类实例化时会自动调用,像下面这样: #双下划线
class Complex: def __init__(self,realpart,imagpart): self.r = realpart self.i = imagpart x = Complex(3.0,-4.5) print(x.r,x.i) # 输出结果:3.0 -4.5
类属性与方法
类的私有属性:
__private_attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。
在类内部的方法中使用时 self.__private_attrs。
类的方法
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。
类的私有方法 :
__private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。
在类的内部调用 self.__private_methods
类的私有属性实例如下:
实例(Python 3.0+) #!/usr/bin/python3 class JustCounter: __secretCount = 0 # 私有变量 publicCount = 0 # 公开变量 def count(self): self.__secretCount += 1 self.publicCount += 1 print (self.__secretCount) counter = JustCounter() counter.count() counter.count() print (counter.publicCount) print (counter.__secretCount) # 报错,实例不能访问私有变量 执行以上程序输出结果为: 1 2 2 Traceback (most recent call last): File "test.py",line 16,in <module> print (counter.__secretCount) # 报错,实例不能访问私有变量 AttributeError: 'JustCounter' object has no attribute '__secretCount'
类的私有方法实例如下:
实例(Python 3.0+) #!/usr/bin/python3 class Site: def __init__(self,name,url): self.name = name # public self.__url = url # private def who(self): print('name : ',self.name) print('url : ',self.__url) def __foo(self): # 私有方法 print('这是私有方法') def foo(self): # 公共方法 print('这是公共方法') self.__foo() x = Site('菜鸟教程','www.runoob.com') x.who() # 正常输出 x.foo() # 正常输出 x.__foo() # 报错
类的专有方法:
init : 构造函数,在生成对象时调用
del : 析构函数,释放对象时使用
repr : 打印,转换
setitem : 按照索引赋值
getitem: 按照索引获取值
len: 获得长度
cmp: 比较运算
call: 函数调用
add: 加运算
sub: 减运算
mul: 乘运算
truediv: 除运算
mod: 求余运算
pow: 乘方
运算符重载
Python同样支持运算符重载,我们可以对类的专有方法进行重载,实例如下:
class Vector: def __init__(self,a,b): self.a = a self.b = b def __str__(self): return 'Vector (%d,%d)' % (self.a,self.b) def __add__(self,other): return Vector(self.a + other.a,self.b + other.b) v1 = Vector(2,10) v2 = Vector(5,-2) print (v1 + v2) 以上代码执行结果如下所示: Vector(7,8)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。