給這個類蟒蛇爲什麼犯規STR或再版或Unicode得到調用my_string.lower()
class Stringy(unicode):
def __init__(self,something):
self.something = something
def __repr__(self):
return "Stringy(%s)"%repr(self.something)
def __str__(self):
return "str(%s)"%repr(self.something)
def __unicode__(self):
return "unicode(%s)"%repr(self.something)
運行以下
s = Stringy("Hello")
print s.lower() #prints "hello" !!! Why?
print s # correctly prints str('Hello')
print unicode(s) #correctly prints unicode('Hello')
print [s] #correctly prints Stringy('Hello')
print s.upper() #prints "HELLO" !!! Why?
時叫你爲什麼不upper
/lower
/等觸發__str__
方法?
不應該在發動機罩下有什麼東西像 unicode(self).lower()
會發生?
或str(self).lower()
?
不要忘記,你繼承的對象通常是不可變的(方法返回原始類型的新實例)。 – mgilson