如何覆盖Python的“ str”,使其返回大写的值?

时间:2019-04-26 21:29:04

标签: python python-3.x string

我如何定义

class CapStr(str):
    # ...

在Python(3.7+)中,以便结果str子类中的所有字母都大写,例如

>>> foo: CapStr = CapStr('aBcd')
>>> foo
'ABCD'
>>> CapStr('wXyZ')
'WXYZ' 

1 个答案:

答案 0 :(得分:6)

您可以覆盖__new__的子类的str方法,以将其超类的__new__方法包装为大写的值:

class CapStr(str):
    def __new__(cls, value):
        return super().__new__(cls, value.upper())

这样:

>>> CapStr('aBcd')
'ABCD'