马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 sYMMetrY 于 2020-3-10 22:29 编辑 #程序一:
class Const:
l = []
def __setattr__(self,name,value):
if name.isupper():
if name not in self.l:
self.l.append(name)
super().__setattr__(name,value)
else:
print('常量无法改变!')
else:
print('常量名必须由大写字母组成!')
#程序二:
class Const:
l = []
def __setattr__(self,name,value):
if name.isupper():
if name not in self.l:
self.l.append(name)
super().__setattr__(name,value)
else:
return('常量无法改变!')
else:
return('常量名必须由大写字母组成!')
#运行结果一
>>> c = Const()
>>> c.N = 2
>>> c.N
2
>>> c.N=3
常量无法改变!
>>> c.N
2
#运行结果二
>>> c = Const()
>>> c.N = 2
>>> c.N = 3
#未出现<font color="Red">'常量无法改变!'</font>的提示句子
>>> c.N
2
这种区别在不同的魔法方法中的体现是不一样的,有时表现相同,有时有差别(如本例),这是为什么呢?不同魔法方法使用该如何明辨选用return还是print?
你在 IDLE 里调用不就是在 shell 里输入的吗!
在 IDLE 的交互模式下,也就是一打开看见的,
敲了变量或函数时会在屏幕上显示,如果在编程的时候,没有 print 是不会输出的。
你要喊不动可以看一下下面的例子: 你把代码保存成文件,用 IDLE 打开运行后会发现并没有输出 0,
并且 return 会返回当前的函数 并结束函数,
返回函数,那就可以用赋值给一个变量,
像刚才的例子,如果在添一句 v = f()
那 v 就是 return 后的值。
如果用 print 就不会返回函数,也不会结束函数
例如刚才的例子,把 return 改成 print,
你会发现 v 变量 None ,没有返回。
|