首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中创建类范围的、可操作的变量?

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

Stack Overflow用户
提问于 2019-07-16 05:28:29
回答 2查看 273关注 0票数 0

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

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

例如:

代码语言:javascript
复制
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”不是一个变量。我还有很多类似的问题,但本质上,我想知道是否有任何方法可以避免过多地使用“自我”这个词。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-07-16 05:30:48

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

编辑:你应该读一些关于Python OOP的文章,里面有一些这种语言独有的东西。例如,一个Python类有一个构造器__new__和一个初始化器__init__。第一个实际上是一个构造函数,因为当你进入它的时候,实例还不存在,它的返回值主要是所需的实例。然后,Python自动调用由构造函数返回的对象的__init__方法,并在此构建实例属性。当然,您也可以直接从__new__绑定属性,但__init__就是为此而准备的。

票数 3
EN

Stack Overflow用户

发布于 2019-07-16 05:31:09

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

代码语言:javascript
复制
def __init__(self, heightInput, widthInput, pixelValue):
    self.height = heightInput
    self.width = widthInput

def readHeight:
    print(self.height)

这就是你要找的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57047421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档