LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 520|回复: 5

大哥快看

[复制链接]
发表于 2005-2-19 11:08:31 | 显示全部楼层 |阅读模式
这是书本上的程序,运行老是报错(教材是2。1版本,运行环境是2.4)
>>> 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)
Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
TypeError: this constructor takes no arguments
各位大哥看看怎么回事?

还有一个程序:
>>> class simple:
...         def _cmp_(self,obj):
...                 print '_cmp_'
...                 return 1
...         def _lt_(self,obj):
...                 print '_lt_'
...                 return 0
...        
>>> s=simple()
>>> s<5
True
>>> s>5
False

可是课本上说的是执行s<5的结果是
_lt_
0
执行s>5的结果是
_cmp_
1

这是不是因为2。4版本作了重大变化
发表于 2005-2-19 12:55:57 | 显示全部楼层

  1. >>> class vector:
  2. ...     def __init__(self,a,b):
  3. ...         self.a=a
  4. ...         self.b=b
  5. ...     def _str_(self):
  6. ...         return 'vector(%d,%d)' %(self.a,self.b)
  7. ...     def _add_(self,other):
  8. ...         return vector(self.a+other.a,self.b+other.b)
复制代码


__init__是这样的,不是_init_
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-19 17:59:12 | 显示全部楼层

怎么还有问题

>>> 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(1,15)
>>> print v1+v2
Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
TypeError: unsupported operand type(s) for +: 'instance' and 'instance'

我不是定义了重载函数吗(_add_)
怎么还会出现 unsupported operand type(s) for +: 'instance' and 'instance'
回复 支持 反对

使用道具 举报

发表于 2005-2-19 18:12:31 | 显示全部楼层
ft

  1. >>> class vector:
  2. ...     def __init__(self,a,b):
  3. ...         self.a=a
  4. ...         self.b=b
  5. ...     def __str__(self):
  6. ...         return 'vector(%d,%d)' %(self.a,self.b)
  7. ...     def __add__(self,other):
  8. ...         return vector(self.a+other.a,self.b+other.b)
复制代码

这本书你还是不要看了
建议弄本新的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-19 20:25:15 | 显示全部楼层
谢谢这位大哥,不知道有没有python2.4中文版教程
回复 支持 反对

使用道具 举报

发表于 2005-2-19 20:27:33 | 显示全部楼层
没有,用字典,看英文
痛苦啊~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表