Python中类的特殊方法详解

maiziedu · 2016-11-29 10:14:36 · 2983 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2016-11-29 10:14:36 的主题,其中的信息可能已经有所发展或是发生改变。

  本文和大家分享的主要是python语言中类的特殊方法相关用法,希望对大家有帮助。

  构造序列

  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])

  程序的运行结果为:

1.png

  构造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)

  程序的运行结果为:

2.png

  构造可比较类

  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)

  程序的运行结果为:

3.png

  构造可运算类

  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()

  程序的运行结果为:

4.png

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


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2983 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传