-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 回答