Python &引用;MyVar";未定义PylanceReportUndefinedVariable 目标:我试图为Django创建一个可重用的类,我在其中创建了一个名为MyVar的变量,以便在以后重新使用该类时覆盖它ItemsView 问题:当我在MySerializer中使用MyVar时,它会说“MyVar”没有定义

Python &引用;MyVar";未定义PylanceReportUndefinedVariable 目标:我试图为Django创建一个可重用的类,我在其中创建了一个名为MyVar的变量,以便在以后重新使用该类时覆盖它ItemsView 问题:当我在MySerializer中使用MyVar时,它会说“MyVar”没有定义,python,django,Python,Django,正如在评论中提到的,最好找到一种不同的方式来组织你正在尝试做的事情。但如果出于某种原因与此结构绑定,则可以在内部类实例化期间访问它: class Outer(): MyVar = 'abc' class Inner(): def __init__(self): self.MyInnerVar = Outer.MyVar 但是MyVar的值只会在实例化期间传递。试试这个: my_outer = Outer() print(my_o

正如在评论中提到的,最好找到一种不同的方式来组织你正在尝试做的事情。但如果出于某种原因与此结构绑定,则可以在内部类实例化期间访问它:

class Outer():
    MyVar = 'abc'
    
    class Inner():
        def __init__(self):
            self.MyInnerVar = Outer.MyVar
但是MyVar的值只会在实例化期间传递。试试这个:

my_outer = Outer()
print(my_outer.MyVar)
my_inner = my_outer.Inner()
print(my_inner.MyInnerVar)
my_outer = 'def'
print(my_inner.MyInnerVar)

最后一行将打印“abc”,而不是“def”。

您不能这样做。子类具有特定的上下文。此外,即使这是可能的,那么继承它也不会改变
MySerializer
,因为该类是在
ItemsView
类级别构造的,而不是任何子类的级别。看到这一点,尽管原始类有其他值,但我能够覆盖它们@alialkaraawi:您可以覆盖一个变量,但这对
MySerializer
没有任何影响,因为它是在创建
ItemsView
时创建的,而不是在创建
ItemsView
的子类时创建的。
my_outer = Outer()
print(my_outer.MyVar)
my_inner = my_outer.Inner()
print(my_inner.MyInnerVar)
my_outer = 'def'
print(my_inner.MyInnerVar)