【发布时间】:2020-08-25 11:54:51
【问题描述】:
显然这在Python代码中是做不到的,比如
class Foo:
a = Foo()
但是在创建语言本身时,他们是如何设计的呢?
示例包括具有real、imag、numerator 和denominator 属性的int; str 有__doc__;方法有自己的方法,type 是自己的元类。
如果您尝试使用 Python 代码复制类似的内容,他们如何解决递归问题?
【问题讨论】:
-
我不知道这是否回答了你的问题,但在内部我认为所有这些都是
PyObject*s?在 C 中你不能这样做的原因是默认情况下事物不是指针。指针可以让你在不使对象无限大的情况下做到这一点。 -
请记住,Python 字符串可以只是 C 字符串的包装器、C 整数的 Python 整数包装器等。不需要在实例化时预先创建所有可能的属性;一个只需要单一的支持值。
-
你当然可以让 Python 中的
Foo.a成为另一个foo。同样的规则适用——在运行时创建它,或者在引导之后等。 -
无论如何,您遇到的具体问题是什么,此答案将帮助您解决?仅仅基于好奇心的问题在这里通常是题外话;帮助中心指南要求问题要实用——也就是说,要对你如何进行编程实践产生具体影响。