有关Python和类特定变量的问题

 huangpeishan49 发布于 2023-02-13 13:13

我有一个关于python和类初始化变量的问题.

所以我最近在Python(2.7.X)中注意到,如果设置一个尚未定义或初始化的类变量,您仍然可以调用和访问该变量中的数据.

例如:

class Test:
    def __init__(self):
        self.a = "Hello"


t = Test()
print t.a
t.b = "World"
print t.b

输出:

Hello
World

我希望'print tb'出错,因为b尚未在Test()类中定义,但它运行没有任何问题.为什么会这样?谁能解释一下?

http://ideone.com/F2LxLh

感谢您的时间.

1 个回答
  • 从实例对象上的文档(t是一个实例对象,因为它是自定义类的实例Test):

    不需要声明数据属性; 像局部变量一样,它们在第一次被分配时就会存在.

    然而,你可以通过让你的预期行为__slots__与新式类.这会覆盖属性的默认字典存储,以使对象的内存效率更高,如果尝试分配给未定义的属性,也会导致AttributeError __slots__,例如:

    >>> class Test(object):
    ...     __slots__ = ['a']
    ...
    >>> t = Test()
    >>> t.a = "Hello"
    >>> t.b = "World"
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'Test' object has no attribute 'b'
    

    2023-02-13 13:15 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有