类本身的意思是对象?

sri*_*thy 12 c# ruby python java smalltalk

我只是阅读python类文档,它说,在python"类本身就是对象".如何与C#或Java类不同?这类类与C#或Java相比有哪些优缺点?

Dan*_*rov 8

在Python中,类是对象,您可以将它们分配给变量,将它们传递给函数等,就像任何其他对象一样.例如

>>> t = type(10)
>>> t
<type 'int'>
>>> len(t.__dict__)
55
>>> t() # construct an int
0
>>> t(10)
10
Run Code Online (Sandbox Code Playgroud)

Java具有Class提供有关类的一些信息的对象,但您不能使用它们来代替显式类名.它们不是真正的类,只是类信息结构.

Class C = x.getClass();
new C(); // won't work
Run Code Online (Sandbox Code Playgroud)


Cha*_*tin 1

主要区别在于它们意味着您可以轻松地将类作为对象进行操作。Java 中也提供了相同的功能,您可以使用Class的方法来获取有关对象的类的信息。在 Python、Ruby 和 Smalltalk 等语言中,语言的动态特性允许您“打开”类并更改它,这有时称为“猴子修补”。

就我个人而言,我不认为这些差异有什么大不了的,但我相信我们可以就此展开一场良好的宗教战争。