from testutils import assert_raises x = "An interesting piece of text" assert x is str(x) class Stringy(str): def __new__(cls, value=""): return str.__new__(cls, value) def __init__(self, value): self.x = "substr" y = Stringy(1) assert type(y) is Stringy, "Type of Stringy should be stringy" assert type(str(y)) is str, "Str of a str-subtype should be a str." assert y + " other" == "1 other" assert y.x == "substr" ## Base strings currently get an attribute dict, but shouldn't. # with assert_raises(AttributeError): # "hello".x = 5