【发布时间】:2017-06-30 08:11:55
【问题描述】:
我正在尝试从另一个内部类引用一个内部类。我都试过了:
class Foo(object):
class A(object):
pass
class B(object):
other = A
和
class Foo(object):
class A(object):
pass
class B(object):
other = Foo.A
各自的结果:
Traceback (most recent call last):
File "python", line 1, in <module>
File "python", line 6, in Foo
File "python", line 7, in B
NameError: name 'A' is not defined
和
Traceback (most recent call last):
File "python", line 1, in <module>
File "python", line 6, in Foo
File "python", line 7, in B
NameError: name 'Foo' is not defined
这可能吗?
【问题讨论】:
-
从您的尝试中可以清楚地看出答案是否定的,但是您最终要在这里做什么? 你想解决什么问题?
-
为什么有嵌套类?它们在 Python 中很少有用。
-
使用类并不总是适合您要解决的问题。
-
第 1 部分)我知道这将不可避免地导致“你没有使用 Python 设计”。我知道这一点,但这种论点在很大程度上是主观的。我的应用程序有几个不同的模型,例如User 和 Transaction,分别位于 models/user.py 和 models/transaction.py 中。两个模型类都有 protopc 消息类,“Msg”,例如User.Msg 和 Transaction.Msg。为了导入简洁和维护两个消息类之间的命名空间,我将它们设为内部类。
-
第 2 部分)因此,我可以执行“从用户导入用户”并使用“用户”和“用户”而不是“导入用户”并使用“user.User”和“user.Msg” .味精”。 “交易”的例子更长。问题是我还有一个“Transaction.Msg”需要引用的“Transaction.Status”。
标签: python python-2.7 oop inner-classes