-3

私はPythonの初心者です...出力を期待してこのコードを書きましたが、

global name:xxx
derived class
base class
globally declared function has been called
globally declared function has been called

しかし、私は次の出力を得ました、

Global name:xxx
derived class
derived class
base class
None 
Globally declared function has been called
Globally declared function has been called

実際にはどのようなロジックですか?どこが間違っていますか?

これが私のコードです:

Name=raw_input("Global name:")
def display():
    print "Globally declared function has been called"
class base(object):
    def __init__(self):
        self.bname='base class'
        print self.bname
    def bfun1(self):
        display()
class derived(base):
    def __init__(self):
        self.dname="derived class"
        print self.dname
    def bshow(self):
        self.bsname=raw_input(super(derived,self).__init__())
        print self.bsname
        display()
ob=derived()
ob.__init__()
ob.bshow()
ob.bfun1()
4

1 に答える 1

2

明示的に呼び出す必要はありません。.__init__()オブジェクトを作成するときにすでに呼び出されています。ob = derived()あなたのために呼び出し.__init__()ます。

後で、明示的にbshow()呼び出しますbase.__init__()が、呼び出しにラップしraw_input()ます。base.__init__()には明示的なreturnステートメントがないため(あるべきではありません)、関数の既定の戻り値 をraw_input()出力します。None

次のコードは、予想に近いものになります。

Name=raw_input("Global name:")

def display():
    print "Globally declared function has been called"

class base(object):
    def __init__(self):
        self.bname='base class'
        print self.bname

    def bfun1(self):
        display()

class derived(base):
    def __init__(self):
        self.dname="derived class"
        print self.dname
        super(derived, self).__init__()

    def bshow(self):
        self.bsname=raw_input()
        print self.bsname
        display()

ob=derived()
ob.bshow()
ob.bfun1()
于 2013-10-14T10:13:02.113 に答える