如何解决python的type()函数
下面是我试过的代码
class try1 :
a = 0
Box = type(try1())
print(Box)
这是输出
<class '__main__.try1'>
现在我稍微改变了我的代码
class try1:
a = 0
Box = type(try1())
print((type(Box)))
这是输出然后
<class 'type'>
现在我知道 type() 函数用于返回给定参数的类类型。任何人都可以帮助我理解在已经存储了另一个类的类型(即 try1)的变量(即 Box )上应用 type() 函数的原因是什么?
解决方法
首先,type
不是一个函数,而是一个类。见the docs
也许这段代码让它更清晰一点:
class try1 :
a = 0
instance = try1()
box = type(instance)
print(box)
print((type(box)))
# the type of the instance object is it's class
assert box is try1
# but classes themselves are objects too
assert isinstance(try1,object)
# and because box is try1
assert type(box) is type(try1)
# to be more specific,the class of a class is type
assert isinstance(try1,type)
assert type(try1) is type
# and therefore
assert repr(type(try1)) == "<class 'type'>"
# we could have created the try1 class by using the type class:
try1 = type('try1',(),{'a': 0})
# and end up with exactly the same thing
assert try1().a == 0
assert repr(type(try1())) == "<class '__main__.try1'>"
# well almost... we just created a new class and rehung the try1 to point to it
# box still points to the old try1
# so they may look the same
assert repr(try1) == repr(box) # "<class '__main__.try1'>"
# they are different classes
assert not (try1 is box)
Python 中的所有变量都只是指向某事物的名称。 class try1:
只是一种语法糖,用于创建一个 __name__
为 try1 的类型,并让命名空间中的名称 try1 指向它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。