【问题标题】:Object Oriented Programming Python - Class properties面向对象编程 Python - 类属性
【发布时间】:2017-06-14 17:40:38
【问题描述】:

我正在尝试理解 Python OO(面向对象)中的类属性。

假设我有以下代码。

    class Testing():
        surname = "Doe"

        def __init__(self):
            print(surname)
            

如果我们打印surname,如上图,会抛出如下错误:NameError: name 'surname' is not defined。那么,如何从类外部或类内部访问这个类属性?

【问题讨论】:

  • OO 编程对 Python 中的局部变量没有影响。
  • 局部变量与类属性无关。
  • print(email)print(surname) ?
  • 局部变量在类定义中的工作方式与在其他任何地方的工作方式相同:它们在本地可用,而不是在它们所在的范围之外(但可以从内部范围访问)。
  • @eyllanesc 是迂腐的,self.surname 将是一个实例属性。类级属性属于类,实例属性属于实例。

标签: python python-3.x oop scope


【解决方案1】:

surname 仅在 __init__ 方法中可用。如果您想在其他任何地方访问它,您应该使用self.surname = 'Doe'Testing.surname = 'Doe'。请注意,self 是对实例的引用。

通常类属性在类中声明如下:

class Testing:
     surname = 'Doe'

您可以使用Testing.surname 访问和/或重新分配它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2014-09-04
    • 2020-05-18
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多