Python访问父类(不是继承)

Python访问父类(不是继承),python,class,oop,Python,Class,Oop,是否可以访问另一个类内部的类中的父方法/属性 class ClassA: a = 'a' class ClassB(): def method(self): return self.a instance = ClassA() instance2 = instance.ClassB() instance2.method() 不,嵌套类不会自动在实例之间产生关系。您所做的只是在ClassA上创建一个属性,该属性恰好是一个类对象。在实例上调

是否可以访问另一个类内部的类中的父方法/属性

class ClassA:
    a = 'a'

    class ClassB():
        def method(self):
            return self.a

instance = ClassA()
instance2 = instance.ClassB()
instance2.method()

不,嵌套类不会自动在实例之间产生关系。您所做的只是在
ClassA
上创建一个属性,该属性恰好是一个类对象。在实例上调用该属性只会找到class属性,并创建
ClassB
的新实例,而不知道或引用
ClassA
实例

您需要通过传递引用来明确此类关系:

class ClassB():
    def __init__(self, a):
        self.a = a

    def method(self):
        return self.a

class ClassA:
    a = 'a'

    def class_b_factory(self):
        return ClassB(self)


instance = ClassA()
instance2 = instance.class_b_factory()
instance2.method()

不,嵌套类不会自动在实例之间产生关系。您所做的只是在
ClassA
上创建一个属性,该属性恰好是一个类对象。在实例上调用该属性只会找到class属性,并创建
ClassB
的新实例,而不知道或引用
ClassA
实例

您需要通过传递引用来明确此类关系:

class ClassB():
    def __init__(self, a):
        self.a = a

    def method(self):
        return self.a

class ClassA:
    a = 'a'

    def class_b_factory(self):
        return ClassB(self)


instance = ClassA()
instance2 = instance.class_b_factory()
instance2.method()

@第四:这是一个正确的名字;类是实例工厂,元类是类工厂,等等。在特定上下文中单独使用函数生成对象时,在名称中使用
factory
是可以的,除非特定上下文提供更好的名称。不过,这里没有上下文可谈。@thefourtheye:这是正确的名称;类是实例工厂,元类是类工厂,等等。在特定上下文中单独使用函数生成对象时,在名称中使用
factory
是可以的,除非特定上下文提供更好的名称。不过,这里没有上下文可谈。。