[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 是单引号,你要切换成英语输入法再输入这个 引号. ""
这都给你看出来啦?!我的吗呀。
Global site tag (gtag.js) - Google Analytics