Python 为什么同样的代码,一个输出为None,另一个可以输出结果?求大佬鞭挞

class Book:
def init(self, name, writer, tuijian, zhuangt ):
self.name = name
self.writer = writer
self.tuijian = tuijian
self.zhuangt = zhuangt

def show_info(self):
    if self.zhuangt == 0:
        zhuangtai = '未借出'
    elif self.zhuangt == 1:
        zhuangtai = '已借出'
        return '书名:%s,作者:%s,推荐语:%s \n 状态:%s'%(self.name,self.writer,self.tuijian,zhuangtai)

my = Book('飞鸟集','托尔斯泰','像鸟一样飞翔',0)

print(my.show_info())

class Book:
def init(self ,name ,writer , tuijian , zhuangt):
self.name = name
self.writer = writer
self.tuijian = tuijian
self.zhuangt = zhuangt

def show_info(self):
    if self.zhuangt == 0:
        zhuangtai = '未借出'
    elif self.zhuangt == 1:
        zhuangtai = '已借出'
    return '书名:《%s》,作者:%s , 推荐语:%s \n状态:%s'%(self.name,self.writer,self.tuijian, zhuangtai)

my = Book('水浒传','施耐庵','大河向东流',0)
print(my.show_info())


这两个代码是一样的 ,为啥第一个代码输入为0的时候输出为None,而第二个代码 输入为0的时候就能显示出结果?有大佬指教一下吗

因为你第一个代码show_info 函数的return 语句未与if 和 elif 这一层对齐,将return 那行向前移动一个tab(一般为4个空格)就行。

第一个里面 show_info() 函数的 return 语句缩进多了

另外,构造函数是 __init__() 不是 init() 你的代码真的可以正常运行吗

因为你第一个代码里面,return只是给elif,并没有给if,如果你在第一个代码的if里面也加上return,就有结果了