输出来自类实例变量,而不仅仅是类variab

2024-04-25 22:58:10 发布

您现在位置:Python中文网/ 问答频道 /正文

当我想访问继承类的类变量时遇到了一个问题,继承类的实例变量与类变量的实例变量同名。 当我想要打印那个变量时,输出来自打印实例变量。 我只是想知道在这种情况下如何打印classB"classvar1"的class变量。你知道吗

class A:
    classvar1 = "I am a class variable in class A"
    def __init__(self):
        self.var1 = "I am inside class A's constructor"
        self.classvar1 = "Instance var in class A"

class B(A):
    classvar1 = "I am in class B"
    def __init__(self):
        self.var1 = "I am inside class B's constructor"
        self.classvar1 = "Instance var in class B"



a = A()
b = B()

print(b.classvar1)

我期望输出是

"I am in class B"

但我有

"Instance var in class B"

Tags: 实例instanceinselfinitvardef情况
2条回答

就像胡安帕.阿里维拉加在评论中说,你将两个变量命名为相同的,如果你将“I am in class B/A”更改为不同的变量名(比如,classvarA和classvarB),它的工作方式与你所希望的一样。你知道吗

class A:
    classvarA = "I am a class variable in class A"
    def __init__(self):
        self.var1 = "I am inside class A's constructor"
        self.classvar1 = "Instance var in class A"

class B(A):
    classvarB = "I am in class B"
    def __init__(self):
        self.var1 = "I am inside class B's constructor"
        self.classvar1 = "Instance var in class B"



a = A()
b = B()

print(b.classvarB)

让类变量和实例变量具有相同的名称并不是一个好主意,但是要回答您的问题,您可以使用

B.classvar1

或者

b.__class__.classvar1

或者更好

type(b).classvar1

相关问题 更多 >