首页 > 解决方案 > 类变量无法对实例变量执行属性查找

问题描述

我在玩和学习python OOP这个庞大的话题时观察到,一个类变量可以被创建的类实例访问,但是类不能调用类定义的实例变量

class abc():
    height=180
    def __init__(self,name):
        self.age=12 
        self.name=name


ee=abc("Muhammad")
print(ee.height)
print(abc.height)

输出

180
180

但是,如果我尝试通过类名直接访问类变量,则会出现错误。

ee=abc("Muhammad")
print(ee.height)
print(abc.age)

输出

AttributeError: class abc has no attribute 'age'

所以,我观察了这一点,并认为与初学者分享python OOP的深度会有所帮助。请如果有人可以对此有所了解。

标签: pythonoop

解决方案


您没有使用age = 12in设置属性__init__。您所做的一切都定义了一个局部变量,该变量将在__init__完成后收集垃圾。

您必须使用abc.age = 12实际设置类 abc
(或type(self).age = 12)的属性。

我假设这是一个教育示例,否则为似乎是模特的人设置班级年龄并不是很有用。

每次__init__调用时重新设置类属性也是多余的。


推荐阅读