【问题标题】:Python - Creating a Class and changing it's objects Value using functionsPython - 创建一个类并使用函数更改它的对象值
【发布时间】:2013-01-14 19:33:03
【问题描述】:

建议我重新发布此内容以更清楚。

上了一堂课,其余的都完成了。任何指导表示赞赏。我已经得出了我坚持的部分问题,以保持简短。我也附上了我的作品。

通过下面的工作,我希望能够创建一个包含一个变量的类。我希望能够更改该变量并打印新变量。例如,将值从 horns = 2 更改为 horns = 4。问题要求我专门使用下面的 3 个函数来回答问题。使用我当前的代码,在 raw_input 提示符处输入值后会收到一条错误消息。

提前感谢您的帮助。

问题如下:

创建一个包含 1 个变量的类,其中包含自己的属性。提供以下3种方法:

getvariable1() - 使用返回键返回属性 1 的值

setvariable1() - 这应该允许为属性 1 指定新值 - 接受输入需要额外的参数。

printerfun() - 打印对象变量的值。

创建您自己的类对象并为创建的对象调用 get & set 方法。使用printerfun() 方法检查代码是否有效。

我的工作:

class animal:
    horns = 2

    def printerfun(self):
        print getHorns() 

    def getHorns(self): #don't get where I should call this
        return self.horns

    def setHorns(horns): 
        self.horns = horns

animal_1 = animal()

F1 = raw_input('Please enter number of horns: ')
setHorns(F1) 

【问题讨论】:

  • @DanielRoseman 我认为他/她可能只是在使用这种东西来介绍 OOP?教授 OOP 原理与教授 Python 是不一样的,一般来说,interface 的概念是有用的。

标签: python class function object


【解决方案1】:

setHorns 不存在:animal.setHorns 存在。 这是class method

您似乎需要阅读一下Object Oriented Programming,这是涉及类时使用的编程风格。

在这个特定的练习中,您需要创建一个animal object。为此,您需要 instantiate 班级。这就是您对animal_1 = animal() 所做的。 animal_1 现在是 animal 类的对象,你可以调用它的方法:animal_1.setHorns(2)

如果您仍在为这些概念苦苦挣扎,您可能需要阅读更多 ground to earth tutorial in python

【讨论】:

    【解决方案2】:

    这是你想要的吗?

    class animal: 
        horns = 2
    
        def printerfun(self):
            print self.getHorns() 
    
        def getHorns(self):
            return self.horns
    
        def setHorns(self, horns): 
            self.horns = horns
    
    if __name__ == "__main__"
        animal_1 = animal()
        animal_1.printerfun()
    
        F1 = raw_input('Please enter number of horns: ') 
        animal_1.setHorns(F1)
        animal_1.printerfun()
        horns = animal_1.getHorns()
        print(horns)
    

    这个输出:

    >>> 2
    >>> Please enter number of horns: 4
    >>> 4
    >>> 4
    

    【讨论】:

    • 我确实明白类的行为是一个蓝图,在蓝图中给出了对象。我们可以从此蓝图创建更多实例并创建独特的对象。或多或少是我的把握,希望是对的。这是我无法使用给出的 3 个函数来回答的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2017-05-24
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多