鱼C论坛

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

关于__new__

[复制链接]
发表于 2017-11-23 10:17:21 | 显示全部楼层 |阅读模式

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

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

x
  1. #-------返回字符串中字符的ASCII码和-----#
  2. class Nint(int):
  3.     def __new__(cls, string):
  4.         
  5.         if type(string) == 'str':
  6.         
  7.             
  8.             total = 0
  9.             for i in string:
  10.                 total = total+ ord(i)
  11.             string = total
  12.         return int.__new__(cls, string)
  13.             
复制代码

  1. >>> Nint(123)
  2. 123
复制代码

这样能输出值
但是一旦里面是字符就报错
  1. >>> Nint('A')
  2. Traceback (most recent call last):
  3.   File "<pyshell#59>", line 1, in <module>
  4.     Nint('A')
  5.   File "C:\Users\asus\Desktop\python练习\041\041-2-2.py", line 12, in __new__
  6.     return int.__new__(cls, string)
  7. ValueError: invalid literal for int() with base 10: 'A'
  8. >>>
复制代码

我觉得应该是if判断那里出现问题了,求解答是怎么回事?

还有一个问题:

在小甲鱼41讲课后习题中,为什么__del__方法里还要del self.new_file?
  1. #------删除对象时文件自动关闭-----#
  2. class FileObject:
  3.     def __init__(self, filename = 'record.txt'):
  4.         self.new_file = open(filename, 'r+')

  5.     def __del__(self):
  6.         self.new_file.close()
  7.         del self.new_file
  8.         
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-11-23 11:27:37 | 显示全部楼层
问题一第5行可以尝试改成
  1. if isinstance(string,str):
复制代码

因为左边的type(string)是一个 str类型 ,右边是一个 内容为“str"的字符串,是不可能相等的。

问题二。。。我也不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-23 11:56:20 | 显示全部楼层
第四时空 发表于 2017-11-23 11:27
问题一第5行可以尝试改成
因为左边的type(string)是一个 str类型 ,右边是一个 内容为“str"的字符串,是 ...

嗯嗯 谢谢 第一个问题搞懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 14:48:17 | 显示全部楼层
阿撩 发表于 2017-11-23 11:56
嗯嗯 谢谢 第一个问题搞懂了

其实可以自己在idle上实践的。
例如:
>>> type('s')
<class 'str'>
>>> type('s') == 'str'
False
>>> type('s') == str
True
>>>

所以第一个问题,其实第五行也可以改成:
if type(string) == str:
去掉引号就没问题了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-26 02:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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