鱼C论坛

 找回密码
 立即注册
查看: 1325|回复: 6

新人求助 python第039讲 课后习题 动动手1

[复制链接]
发表于 2018-3-5 20:27:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
class Stack:
    def __init__(self,start=[]):
        self.stack = []    #请问为什么这里要这么定义列表?能不能self = []
        for x in start:
            self.push(x)
            
    def push(self,obj):
        self.stack.append(obj)
        
    def isEmpty(self):  
        return not self.stack   #栈空则返回True
   
    def pop(self):
        if not self.stack:   #首先判断是否为空?
            print('警告:栈为空!')
        else:
            return self.stack.pop()
        
    def top(self):
        if not self.stack:
            print('警告:栈为空!')
        else:
            return self.stack[-1]
    def bottom(self):
        if not self.stack:
            print('警告:栈为空!')
        else:
            return self.stack[0]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-7 15:59:57 | 显示全部楼层
可以直接self = []
但是self本身是一个内置函数名,如果将self = []之后,self就只能是一个变量,而不是python中的一个内置函数了,想在调用self的其他功能就没办法实现了,如你将 int = 3,那么int后面就只能是3了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 17:45:48 | 显示全部楼层
纳兰小寒 发表于 2018-3-7 15:59
可以直接self = []
但是self本身是一个内置函数名,如果将self = []之后,self就只能是一个变量,而不是py ...

那为什么要设置变量名是self.stack,民字不应该都是_相连吗,比如file_name,但是  .xx
感觉是调用了某个函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 18:44:18 | 显示全部楼层
zdy24 发表于 2018-3-7 17:45
那为什么要设置变量名是self.stack,民字不应该都是_相连吗,比如file_name,但是  .xx
感觉是调用了某个 ...

这就是个人编码习惯了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 19:06:55 | 显示全部楼层
纳兰小寒 发表于 2018-3-7 18:44
这就是个人编码习惯了

我理解的是self.stack 就是一个列表的名字,与list.append(),list.pop()完全不同?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 09:37:24 | 显示全部楼层
zdy24 发表于 2018-3-7 19:06
我理解的是self.stack 就是一个列表的名字,与list.append(),list.pop()完全不同?

那是应为self.stack 在init方法初始化的时候定义为列表了,不然你将self.stack全部换成self.abcd也是可以正常执行的。
python是一个动态编程语言,它的变量可以初始化的时候赋值,可以在你需要用的时候给它临时定义也是没有问题的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-10 11:47:42 | 显示全部楼层
纳兰小寒 发表于 2018-3-8 09:37
那是应为self.stack 在init方法初始化的时候定义为列表了,不然你将self.stack全部换成self.abcd也是可以 ...

明白了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-28 08:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表