2016-05-12 3 views
0

属性私はstrを継承するクラスを持っている:継承、アクセス

class UpperStr(str): 

    def __new__(cls, value, font_size=12): 
     print 'In redefined new...' 
     return str.__new__(cls, value.upper()) 

    def __init__(self, value, font_size=12): 
     print 'In init...' 
     self.font_size = font_size 

それから私は、派生クラスで定義された属性にアクセスすることができます

s = UpperStr('hello') 
print s.font_size 

をそれに方法はありませんので、 Pythonの派生クラスのインスタンスから基本クラスのインスタンスを取得するにはどうすればstrの値を得ることができますか(この場合は'hello')?

+0

「s」または「self」はここでは「hello」です。 's'は基本的に' str'のインスタンスです。 –

+0

ですが、Pythonの継承では、派生クラスは、派生クラス自体で定義された基底+追加メソッドおよび属性と同じ属性およびメソッドを持つことを前提としています。 's'はその意味で' str'のインスタンスではありません。論理的な説明は何ですか? – user3880400

+0

'isinstance(s、str)' ... 's'のように見えるのは' str'です! – kindall

答えて

1

selfを使用すると、文字列自体を参照できます。