在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Python/ python 的類里是否有一個類似于__str__的數(shù)值類型的方法?

python 的類里是否有一個類似于__str__的數(shù)值類型的方法?

請問python 的類里是否有一個類似于__str__的數(shù)值類型的方法,可以通過實例名稱直接得到一個值,從而直接進行運算,比如在下邊的代碼中可以直接進行p1 + p2,而不用寫p1.age + p2.age?
我知道有一個__add__方法,但是對于2+p1這樣的運算會報錯,不夠理想。
謝謝大家。

class person(object):

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print "name:%s, age:%d" % (self.name, self.age)

    def __str__(self):
        return "%d" % self.age

    def __value__(self):
        return self.age


p1 = person("jack", 30)
p2 = person("tom", 29)
p1.info()
p2.info()
print p1
print p2

print p1 + p2
回答
編輯回答
墨小羽

LZ想讓內(nèi)建方法builtins的int也具備自定義__add__的功能,但是弄了半天,運行時的int對象 add 方法是只讀的。 通過 globals['__builtins__'] 替換掉int類,也沒有作用。 應(yīng)該要在C源碼層擴展了。

2018年9月15日 06:33
編輯回答
慢半拍

不夠理想?那就自己寫個__add__唄。

class person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age 

    def info(self):
        print "name:%s, age:%d" % (self.name, self.age)

    def __str__(self):
        return "%d" % (self.age)

    def __value__(self):
        return self.age

    def __add__(self, another):
        return self.age + another.age

p1 = person("jack", 30) 
p2 = person("tom", 29) 

print p1 + p2 #output: 59

推薦閱讀:python doc

2018年7月12日 17:57
編輯回答
故人嘆

你再實現(xiàn)個 __radd__方法,這個是處理對象在右邊的情況。

2018年5月19日 11:27