鱼C论坛

 找回密码
 立即注册
查看: 1643|回复: 3

[已解决]求高手解答一下这段代码为什么报错

[复制链接]
发表于 2017-12-12 17:36:45 | 显示全部楼层 |阅读模式

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

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

x
  1. class Integer:
  2.     def __init__(self, name):
  3.         self.name = name
  4.     def __get__(self, instance, cls):
  5.         if instance is None:
  6.             return self
  7.         else:
  8.             return instance.__dict__[self.name]
  9.     def __set__(self, instance, value):
  10.         if not isinstance(value, int):
  11.             raise TypeError('Expected an int')
  12.         instance.__dict__[self.name] = value
  13.     def __delete__(self, instance):
  14.         del instance.__dict__[self.name]

  15. class Point:
  16.     x = Integer('x')
  17.     y = Integer('y')
  18.     def __init__(self, x, y):
  19.         self.x = x
  20.         self.y = y


  21. p = Point(2.3, 3)
复制代码


我知道错误原因是因为输入了浮点,只能接受整数。但是没搞懂的是为什么x会调用另外一个类?不应该是直接做初始化嘛?这段一点都没搞明白一头雾水
最佳答案
2017-12-13 10:16:25
因为
  1. class Point:
  2.     x = Integer('x')
  3.     y = Integer('y')
  4.     def __init__(self, x, y):
  5.         self.x = x
  6.         self.y = y
复制代码

在这一段代码中
  1. x = Integer('x')
  2.     y = Integer('y')
复制代码

属于是全局变量,是先于__init__方法执行的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-13 09:01:28 | 显示全部楼层
你的问题问的 让我也是一头雾水
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-13 09:09:32 | 显示全部楼层

回帖奖励 +1 鱼币

你恐怕是石乐志哦,初始化放前面吧,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-13 10:16:25 | 显示全部楼层    本楼为最佳答案   
因为
  1. class Point:
  2.     x = Integer('x')
  3.     y = Integer('y')
  4.     def __init__(self, x, y):
  5.         self.x = x
  6.         self.y = y
复制代码

在这一段代码中
  1. x = Integer('x')
  2.     y = Integer('y')
复制代码

属于是全局变量,是先于__init__方法执行的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-4 18:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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