对于Python是否具有类原型感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解或前向声明?,并且为您提供关于c–原型声明和前向声明之间的区别?、Django模型:两个类之间的相互引用,并且无
对于Python是否具有类原型感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解或前向声明?,并且为您提供关于c – 原型声明和前向声明之间的区别?、Django模型:两个类之间的相互引用,并且无法在python中使用前向声明、Go 是否具有类似于 Python 的“if x in”结构?、Go是否具有类似于Python的“ if x in”构造?的宝贵知识。
本文目录一览:- Python是否具有类原型(或前向声明)?(python有类和对象吗)
- c – 原型声明和前向声明之间的区别?
- Django模型:两个类之间的相互引用,并且无法在python中使用前向声明
- Go 是否具有类似于 Python 的“if x in”结构?
- Go是否具有类似于Python的“ if x in”构造?
Python是否具有类原型(或前向声明)?(python有类和对象吗)
我在文件中有一系列Python类。一些类引用其他类。
我的代码是这样的:
class A(): passclass B(): c = C()class C(): pass
尝试运行它,我得到了NameError: name ''C'' is notdefined
。足够公平,但是有什么方法可以使它起作用,还是我必须手动重新排列我的课程才能容纳?在C
++中,我可以创建一个类原型。Python是否具有等效功能?
(我实际上是在玩Django模型,但是我没有尝试使事情复杂化)。
答案1
小编典典在Python中,您本身并不会创建原型,但是您需要了解“类属性”和实例级属性之间的区别。在上面显示的示例中,您是在类B上声明一个类属性,而不是实例级属性。
这是您要寻找的:
class B(): def __init__(self): self.c = C()
c – 原型声明和前向声明之间的区别?
class xx { int getnum(); //Is this a forward declaration or a prototype declaration and why? }; int xx::getnum() { return 1+3; }
所以这个问题已经在代码中得到了评论,但是:
是int getnum();前瞻性声明或原型声明,为什么?
解决方法
当在标准中使用“前向声明”一词时,它们用于引用声明但未定义它们声明的事物(函数或类)的声明.根据这种用法,int getnum()因此是一个前向声明.
函数的“原型声明”在标准(1)中使用得更少,并且主要是在谈论与[C]的兼容性时.但是,在使用时,它指的是与该函数的前向声明完全相同的概念.顺便说一下,你也可以调用int getnum();原型声明.
总而言之,术语“前向声明”和“原型声明”没有正式的定义,但从它们通常使用和理解的方式来看,int getnum();可以描述为.
(1)然而,标准中定义了类似术语“函数原型范围”(C 17 N4659 [basic.scope.proto] 6.3.4 / 1).它在非定义函数声明中建立函数参数名称的范围,它是最接近的封闭函数声明符.
Django模型:两个类之间的相互引用,并且无法在python中使用前向声明
我定义了两个模型,每个模型都互相引用,如下所示:
class User(models.Model): # ... loves = models.ManyToManyField(Article, related_name=''loved_by'')class Article(models.Model): # ... author = models.ForeignKey(User)
您会发现,问题在于两个类都相互引用。无论这两个类的实现顺序如何,python总是会引发NameError
异常,抱怨其中一个类都未定义。
答案1
小编典典您可以在docs中找到解决方案:
如果需要在尚未定义的模型上创建关系,则可以使用模型的名称,而不是模型对象本身:
class Car(models.Model): manufacturer = models.ForeignKey(''Manufacturer'') # ...class Manufacturer(models.Model): # ...
Go 是否具有类似于 Python 的“if x in”结构?
如果不遍历整个数组,如何x
使用 Go检查数组中是否存在?语言有结构吗?
像Python: if "x" in array: ...
答案1
小编典典在 Go 中没有内置的操作符可以做到这一点。您需要遍历数组。您可以编写自己的函数来执行此操作,如下所示:
func stringInSlice(a string, list []string) bool { for _, b := range list { if b == a { return true } } return false}
如果您希望能够在不遍历整个列表的情况下检查成员资格,则需要使用映射而不是数组或切片,如下所示:
visitedURL := map[string]bool { "http://www.google.com": true, "https://paypal.com": true,}if visitedURL[thisSite] { fmt.Println("Already been here.")}
Go是否具有类似于Python的“ if x in”构造?
如果不 遍历整个数组,如何x
使用Go 检查数组中是否存在?语言有结构吗?
像Python: if "x" in array: ...
今天的关于Python是否具有类原型和或前向声明?的分享已经结束,谢谢您的关注,如果想了解更多关于c – 原型声明和前向声明之间的区别?、Django模型:两个类之间的相互引用,并且无法在python中使用前向声明、Go 是否具有类似于 Python 的“if x in”结构?、Go是否具有类似于Python的“ if x in”构造?的相关知识,请在本站进行查询。
本文标签: