• 技术文章 >Python技术 >Python基础教程

    Python新手常见问题二:不正确的使用类变量

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-06-28 09:23:13原创2305

    不正确的使用类变量

    看下面一个例子:

    >>> class A(object):
    ...     x = 1
    ...
    >>> class B(A):
    ...     pass
    ...
    >>> class C(A):
    ...     pass
    ...
    >>> print A.x, B.x, C.x
    1 1 1

    相关推荐:《Python视频教程

    看起来没有问题。

    >>> B.x = 2
    >>> print A.x, B.x, C.x
    1 2 1

    嗯哈,还是和预想的一样。

    >>> A.x = 3
    >>> print A.x, B.x, C.x
    3 2 3

    我了个去。只是改变了A.x,为啥C.x也变了?

    在Python里,类变量通常在内部被当做字典来处理并遵循通常所说的方法解析顺序(Method Resolution Order (MRO))。因此在上面的代码中,因为属性x在类C中找不到,因此它会往上去它的基类中查找(在上面的例子中只有A这个类,当然Python是支持多重继承(multiple inheritance)的)。换句话说,C没有它自己独立于A的属性x。因此对C.x的引用实际上是对A.x的引用。(B.x不是对A.x的引用是因为在第二步里B.x=2将B.x引用到了2这个对象上,倘若没有如此,B.x仍然是引用到A.x上的。)

    相关推荐:

    python新手常见问题一:乱用表达式

    专题推荐:python 新手 问题
    上一篇:python新手常见问题一:乱用表达式 下一篇:Python新手常见问题三:在异常处理时错误的使用参数

    相关文章推荐

    • Python中常用的查找数据结构及算法汇总• Python中的二叉排序树和平衡二叉树是什么• python新手常见问题一:乱用表达式

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网