如何从顶级类范围内访问类值?我的意思是,你是怎么做的
class FooClass(object):
zeroith_base = __bases__[0]
.
.
.
在本例中,我特别尝试的是派生所有基类的元类,以动态生成一个元类,该元类将所有基类的元类进行子类化,从而解决metclass冲突问题。我发现了http://code.activestate.com/recipes/204197-solving-the-metaclass-conflict/,虽然所有的概念对我来说都是有意义的,但是食谱的实际代码超出了我的能力。我不想使用我不懂的代码,所以我试着实现我自己的,更基本的系统,但是在创建过程中我被困在试图检查类对象的第一步。你知道吗
您会发现
__bases__
不是类命名空间的一部分。类命名空间作为第三个参数传递给元类;基作为第二个参数传递。在创建类之前,它们是完全分开的。你知道吗所以您需要做的是编写一个元类来合成所需的元类,然后使用它来创建类。我不知道这是否真的管用,但我看不出有什么理由不管用
您不能在类创建之前检查它,并且在语句套件或类主体完成执行之前它还没有被创建。您第一次能够访问这些信息是在创建有问题的类的类的
MetaClass.__new__
方法中,或者是在创建有问题的类的事物的执行中,从技术上讲,它们根本不需要是元类或类(如下例所示)。你知道吗这是一个非常粗略的原型,可能并不适用于所有情况,但适用于简单的情况,可能比配方更容易遵循。你知道吗
相关问题 更多 >
编程相关推荐