面向对象的编程Python - 类属性

时间:2017-06-14 17:40:38

标签: python python-3.x oop scope

我试图了解Python中的局部变量,特别是在OOP(面向对象编程)中。

如果我有这样的代码,例如:

class Testing():


    def __init__(self, name):
        surname = 'Doe'
        print(surname)
        self.name = name

变量'surname'在这种情况下如何工作,因为以这种方式打印它:print(surname)会给我错误: NameError: name 'surname' is not defined 并将其打印出来那样:print(Testing.surname)会给我这个错误: AttributeError: type object 'Testing' has no attribute 'surname' 最后,如果我在__init__函数中打印它会完成工作,那么这是怎么回事变量可以在类外部还是在类内部访问?

1 个答案:

答案 0 :(得分:2)

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

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

class Testing:
     surname = 'Doe'

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