这个项目的流程是什么?

2024-04-29 11:55:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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()

Tags: nameselfbaseinitdeffunctionclasshas
1条回答
网友
1楼 · 发布于 2024-04-29 11:55:09

您不需要显式调用.__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()

相关问题 更多 >