[python语法语义] 类的高级定制的问题!菜鸟请教!
快乐的蛀虫
2007-06-04
两个数的比较,由于刚开始看Pthon,有些地方不理解,还请大侠多多指教~
问题1: __init__方法与updata方法有什么区别?可不可以写到一个方法里面去? 问题2:return'[%d::%s]'%(self.__num,‘self.__string’) 是什么意思?本句有错误,还请大侠指点一下! 问题3:if isinstance(other,Numstr): 定义方法isinstance时,类Numstr在isinstance方法的参数里,起什么作用? 问题4:方法与函数有什么区别? class Numstr: def __init__(self,num=0,string=''): self.__num=num self.__string=string def updata(self,num=None,string=None): if num!=None: self.__num=num if string!=None: self.__string=string def __str__(self): return'[%d::%s]'%(self.__num,‘self.__string’) __repr__=__str__ def __add__(self,other): if isinstance(other,Numstr): return self.__class__(self.__num+other.__num,self.__string+other.string) else: raise TypeError,'illegal argument type for built-in operation' def __radd__(self,other): if isinstance(other,Numstr): return self.__class__(other.num+self.num,other.str+self.str) else: raise TypeError,'illegal argument type for built-in operation' def __mul__(self,other): if type(other)==type(0): return self.__class__(self.__num*other,self.__string*other) else: raise TypeError,'illegal argument type for built-in operation' def __nonzero__(self): return self.__num or len(self.__string) def __normalize__cmpval(self,cmpres): return cmp(cmpres,0) def __cmp__(self,other): nres=self.__normalize__cmpval(cmp(self.__num,other.__num)) sres=self.__normalize__cmpval(cmp(self.__string,other.__string)) if nt(nres or sres):return 0 sum=nres+sres if not sum:return None return sum thanks you |
|
simohayha
2007-06-04
我晕了,你把你的代码重新编辑下。
|
|
simohayha
2007-06-04
1 我觉得uodata就没必要写,只不过提供了个修改数据的 方法.
2 是单引号,你要切换成英语输入法再输入这个 引号. 3 isinstance也就是判断第一个参数是不是 后面类的实例。 4 在类里面就叫方法。 方法是有绑定的,比如绑定到类,绑定到实例。。。。而函数没有这些地说. |
|
Lich_Ray
2007-06-07
""2 是单引号,你要切换成英语输入法再输入这个 引号. ""
这都给你看出来啦?!我的吗呀。 |