Mat*_*Mat 36 python oop prototype class
我在一个文件中有一系列Python类.有些类引用其他类.
我的代码是这样的:
class A():
pass
class B():
c = C()
class C():
pass
Run Code Online (Sandbox Code Playgroud)
试着去试试那个,我明白了NameError: name 'C' is not defined.很公平,但有没有办法使它工作,或者我是否必须手动重新订购我的课程以适应?在C++中,我可以创建一个类原型.Python有相同的功能吗?
(我实际上正在使用Django模型,但我没有尝试使问题复杂化).
ver*_*guy 54
实际上,以上所有都是关于Python的很好的观察,但没有一个能解决你的问题.
Django需要反省内容.
做你想做的事的正确方法如下:
class Car(models.Model):
manufacturer = models.ForeignKey('Manufacturer')
# ...
class Manufacturer(models.Model):
# ...
Run Code Online (Sandbox Code Playgroud)
请注意使用类名作为字符串而不是文字类引用.Django提供了这种替代方案来处理Python不提供前向声明的问题.
这个问题让我想起了一个经典的支持问题,你应该总是问任何一个问题的客户:"你真正想做什么?"
Joe*_*way 34
在Python中,您本身并不创建原型,但您需要了解"类属性"和实例级属性之间的区别.在上面显示的示例中,您在类B上声明了一个类属性,而不是实例级属性.
这就是你要找的东西:
class B():
def __init__(self):
self.c = C()
Run Code Online (Sandbox Code Playgroud)
这将解决您提出的问题(但我认为您真的在寻找一个实例属性,因为jholloway7已回复):
class A:
pass
class B:
pass
class C:
pass
B.c = C()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34694 次 |
| 最近记录: |