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

2024-09-28 19:34:12 发布

您现在位置:Python中文网/ 问答频道 /正文

比较新的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”不是变量。我还有很多类似的问题,但本质上我想知道是否有什么方法可以避免使用“自我”这个词这么多。谢谢!你知道吗


Tags: 方法imageselfinitdefwidthclass程序员
2条回答

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

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

def readHeight:
    print(self.height)

这就是你要找的。你知道吗

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

编辑:您应该阅读一些关于Python OOP的文章,这种语言有一些独特之处。例如,一个Python类有一个构造函数__new__和一个初始值设定项__init__。第一个实际上是一个构造函数,因为当你进入它时,实例还不存在,它的返回值主要是需要的实例。然后Python自动调用构造函数返回的对象的__init__方法,在这里构建实例属性。当然,您可以直接从__new__绑定属性,但是__init__就是为了这个。你知道吗

相关问题 更多 >