关于__new__参数的问题
class Nint(int):def __new__(cls, arg=0):
if isinstance(arg, str):
total = 0
for each in arg:
total += ord(each)
arg = total
return int.__new__(cls, arg)
问题1:if instance(arg,str)这个语句是判断arg和str什么关系呢 判断arg是否是str(字符串)类型的值 hrpzcf 发表于 2021-11-7 17:13
判断arg是否是str(字符串)类型的值
这里的arg属于对象是吗 hrpzcf 发表于 2021-11-7 17:13
判断arg是否是str(字符串)类型的值
2)isinstance(object, classinfo)
如果第一个参数(object)是第二个参数(classinfo)的实例对象,
则返回True,否则返回False。
也就是说arg是str的实例对象吗
所以说其实这里是有一样看不见的实例化操作吧 就像这样 arg = str(arg) 本帖最后由 hrpzcf 于 2021-11-8 10:42 编辑
W1ND123 发表于 2021-11-8 10:33
这里的arg属于对象是吗
对,arg可以是任何对象
from typing import Callable
def f():
pass
arg0 = 0
arg1 =
arg2 = {0: 0}
arg3 = lambda: 0
arg4 = f
arg5 = "5"
print(isinstance(arg0, int))# True
print(isinstance(arg0, str))# False
print(isinstance(arg1, list))# True
print(isinstance(arg2, dict))# True
print(isinstance(arg3, Callable))# True
print(isinstance(arg4, Callable))# True
print(isinstance(arg5, str))# True
hrpzcf 发表于 2021-11-8 10:41
对,arg可以是任何对象
感谢帮助,谢谢~ 本帖最后由 hrpzcf 于 2021-11-8 10:51 编辑
W1ND123 发表于 2021-11-8 10:38
2)isinstance(object, classinfo)
如果第一个参数(object)是第二个参数(classinfo)的实例对象,
...
不是看不见的实例化操作,是arg本身就是某类的实例,比如isinstance("x", str), "x"本身就是str的实例
另外这种清空也会返回True:
class a:
pass
class b(a): # b继承了a
pass
x = b()
print(isinstance(x, a))# 判断x是否a的实例,一样会返回True
hrpzcf 发表于 2021-11-8 10:46
不是看不见的实例化操作,是arg本身就是某类的实例,比如isinstance("x", str), "x"本身就是str的实例 ...
明白了!感谢回答!
另外这个应该是输入快打错了吧,class a应该大写是吗 W1ND123 发表于 2021-11-8 11:07
明白了!感谢回答!
另外这个应该是输入快打错了吧,class a应该大写是吗
类名使用驼峰命名规则是一个规范,不是强制性的 hrpzcf 发表于 2021-11-8 11:13
类名使用驼峰命名规则是一个规范,不是强制性的
知道了,谢谢~
页:
[1]