Python中类的特殊方法详解

本文深入讲解了Python中用于构造序列、迭代器、可比较类及可运算类的特殊方法,如_len_、_getitem_、_iter_、_next_等,并通过具体代码示例演示了这些方法的应用。

原文来自: https://www.cnblogs.com/space007/p/6114759.html

  构造序列

  1._len_(self)

  2._getitem_(self,key)

  3._setitem_(self,key,value)

  4._delitem_(self,key)

  程序演示:

  myseq.py

  class MySeq:

  def __init__(self):

  self.lseq = ["I","II","III","IV"]

  def __len__(self):

  return len(self.lseq)

  def __getitem__(self,key):

  if 0 <= key < 4:

  return self.lseq[key]

  if __name__ == '__main__':

  m = MySeq()

  for i in range(4):

  print(m[i])

  程序的运行结果为:

  构造iter

  1._iter_(self)

  2._next_(self)

  程序演示如下:

  class MyIter:

  def __init__(self,start,end):

  self.count = start

  self.end = end

  def __iter__(self):

  return self

  def __next__(self):

  if self.count < self.end:

  r = self.count

  self.count += 1

  return r

  else:

  raise StopIteration

  if __name__ == '__main__':

  for i in MyIter(1,10):

  print(i)

  程序的运行结果为:

  构造可比较类

  1._it_()

  2._le_()

  3._gt_()

  4._ge_()

  5._eq_()

  6._ne_()

  程序演示如下:

  mycmp.py

  class MyIter:

  def __init__(self,start,end):

  self.count = start

  self.end = end

  def __iter__(self):

  return self

  def __next__(self):

  if self.count < self.end:

  r = self.count

  self.count += 1

  return r

  else:

  raise StopIteration

  if __name__ == '__main__':

  for i in MyIter(1,10):

  print(i)

  程序的运行结果为:

  构造可运算类

  1._add_()

  2._sub_()

  3._mul_()

  4._div_()

  程序演示如下:

  class Point:

  def __init__(self,x,y):

  self.x = x

  self.y = y

  def __add__(self,oth):

  return Point(self.x + oth.x , self.y + oth.y)

  def info(self):

  print(self.x,self.y)

  if __name__ == '__main__':

  pa = Point(1,2)

  pb = Point(3,4)

  pc = pa + pb

  pc.info()

  程序的运行结果为:

 

 

原文链接:http://www.maiziedu.com/wiki/python/special/

转载于:https://www.cnblogs.com/haitaoli/p/10782650.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值