当前位置: 首页 > 面试题库 >

Python是否具有类原型(或前向声明)?

水睿
2023-03-14
问题内容

我在文件中有一系列Python类。一些类引用其他类。

我的代码是这样的:

class A():
    pass

class B():
    c = C()

class C():
    pass

尝试运行它,我得到了NameError: name 'C' is not defined。足够公平,但是有什么方法可以使它起作用,还是我必须手动重新排列我的课程才能容纳?在C
++中,我可以创建一个类原型。Python是否具有等效功能?

(我实际上是在玩Django模型,但是我没有尝试使事情复杂化)。


问题答案:

在Python中,您本身并不会创建原型,但是您需要了解“类属性”和实例级属性之间的区别。在上面显示的示例中,您是在类B上声明一个类属性,而不是实例级属性。

这是您要寻找的:

class B():
    def __init__(self):
        self.c = C()


 类似资料:
  • 问题内容: 我需要布尔数组的紧凑表示形式,Python是否具有内置的位域类型,还是需要找到其他解决方案? 问题答案: 当我最近有类似需求时,Bitarray是我找到的最佳答案。它是C的扩展(比纯Python的BitVector快得多),并将其数据存储在实际的位域中(因此,内存效率是numpy布尔数组的八倍,后者似乎每个元素使用一个字节。)

  • 问题内容: 我今天遇到了与此类似的代码。 似乎暗示数据类型信息可以与NULL值关联。这是否将元数据附加到将其标识为指定数据类型的NULL值? 这篇文章详细介绍了一种在SqlServer中查找数据类型的方法,但是当我尝试以下行时,它以NULL的形式返回: 问题答案: 在SQL Server中,是在默认情况下所有我能想到的场景。您可以使用以下代码确定这一点: 结果: 在将其放入表中或将其与某些上下文元

  • 我在我们的代码库和在线中也经常看到这种风格,如果有一个带有for循环和if语句的函数,那么所有只有它们使用的变量,除此之外没有任何其他变量被声明。例如: 或者这是过早的优化?我对C、C#和Python很好奇,它们是我使用的语言,也是我反复看到它们的地方。

  • 问题内容: 在Java中,原始类型和数组是否具有包含包? 可能不是,但是只是想确定一下。 问题答案: 简单答案 让我们测试一下: 输出: 空 null 不,他们不:-) 基本类型 原始类是没有包的特殊构造。供参考,请参阅的来源,别名为: 如您所见,原始类是通过package-private和native机制加载的: 并投射到(我想为了启用自动装箱) 包装器类型及其原始类型 顺便说一句:每个包装器类

  • 在Java中,所有对象都继承自。在Go中,所有类型/结构都实现空接口。Rust语言中是否有类似的构造? 如果答案是否定的,是什么让它变得不必要?这是因为Rust中的所有实体(模块除外)都可以按类型参数化吗?这是否消除了所有Rust实体/结构/枚举共享的公共“超类型”或公共特性的需要?

  • 问题内容: 如果我有一个枚举对象,它将被视为原始对象还是引用? 问题答案: 这是参考类型。Java原语是。 您可以通过调用,获取枚举常量的值,该值由EnumSet和EnumMap使用,并且“以其自然顺序遍历元素(声明枚举常量的顺序)” 您甚至可以将自己的成员添加到枚举类,如下所示: