如何在Python中创建类范围内的可操作变量?

时间:2019-07-15 21:28:28

标签: python python-3.x variables self

这里是相对较新的Python程序员。因此,我试图创建一个可由构造函数内初始化的类中的任何方法均可访问和更改的变量。到目前为止,我还不知道该怎么做。

作为问题的“创可贴”,我在类中的每个变量之前一直使用“ self”。当然,还有另一种方法。

例如:

class Image:
    height, width = 0,0

    def __init__(self, heightInput, widthInput, pixelValue):
        height = heightInput
        width = widthInput

    def readHeight:
        print(height)

testObj = Image(10, 10, 20)
testObj.readHeight()

我希望输出为“ 10”,但是会抛出一个错误,提示“ height”不是变量。我还有很多与此类似的问题,但是从本质上讲,我想知道是否有什么方法可以避免过多使用“自我”一词。谢谢!

2 个答案:

答案 0 :(得分:3)

heightwidth是经典变量,它们仅存在于您的__init__方法中,要解决该问题,您必须使用self.heightself.widthself指向当前对象,这是将某些东西绑定到它的方法。

编辑:您应该阅读一些有关Python OOP的文章,该语言有一些独特之处。例如,Python类具有1个构造函数__new__和1个初始化程序__init__。第一个实例实际上是一个构造函数,因为当您进入该实例时该实例尚不存在,其返回值通常是所需的实例。然后,Python自动调用构造函数返回的对象的__init__方法,并在其中构建实例属性。当然,您可以直接从__new__绑定属性,但是__init__在这里。

答案 1 :(得分:1)

正如Shizzen83所说,self指的是类对象的实例。 因此,将在整个类中使用的任何变量都必须以“ self”开头。

def __init__(self, heightInput, widthInput, pixelValue):
    self.height = heightInput
    self.width = widthInput

def readHeight:
    print(self.height)

这就是您要寻找的。