首页 > 解决方案 > 了解 Python 中的属性语法和功能

问题描述

我正在使用 python 2.7,我创建了一个类,并在其中获得了一些属性。我正在使用一些值输入从类中实例化一个对象。班上:

class Prop(object):
    def __init__(self, data):
        self.A = data

和 getter/setter:

@property
def A(self):
    return self._A

@A.setter
def A(self, data):
    self._A = data

以上工作正常。在我的主脚本中,我正在实例化:

prop_demo = Prop('some text')

但是,如果我在 with 内部进行更改__init__self.A = dataself._A = data不会A通过 setter,那么我认为它有点错过了拥有 setter 的意义。我更改了它,因为对我来说使用_内部类变量似乎更直观,并且在self.A = data我看来,该类的实例应该做的事情(在类之外,在我的主脚本中)。

我有两个问题:

  1. 为什么我们这样做self.A而不是self._A在init中?也许我错过了关于_python 类变量的重要性的一些东西?
  2. 为什么在init类里面我们需要调用setter,而setter在创建对象的时候不会自动执行?为什么当我实例化一个对象时设置器不会自动执行?

标签: pythonpython-2.7classproperties

解决方案


推荐阅读