Python - Creating a Class and changing it's objects Value using functions

17,788

Solution 1

Is this what you want to obtain?

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)

This outputs:

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

Solution 2

setHorns doesn't exist: animal.setHorns does. It's a class method

It sems you need to read a bit about Object Oriented Programming, which is the style of programming used when there's classes involved.

In this particular exercise, you need to create a animal object. For that, you need to instantiate the class. This is what you've done with animal_1 = animal(). animal_1 is now a object of the animal class, and you can call its methods: animal_1.setHorns(2)

If you're still struggling with the concepts, you may want to read a more ground to earth tutorial in python

Share:
17,788

Related videos on Youtube

Kesh K
Author by

Kesh K

Updated on September 15, 2022

Comments

  • Kesh K
    Kesh K over 1 year

    I was advised to re post this to be more clear.

    Doing a class and finished with the rest less this one. Any guidance is appreciated. I have derived part of the question where I am stuck with to keep it short. I have also attached my working.

    With my working below, I expect to be able to create a class containing one variable. I want to be able to change that variable and print the new variable. Example, change the value from horns = 2 to horns = 4. The question asks me specifically to use the 3 functions below to answer the question. With my current codes, I get an error message after I enter the value at the raw_input prompt.

    Thanks in advance for help.

    Question as follows:

    Create a class with 1 variable in it holding its own properties. Provide the following 3 methods:

    getvariable1() - use return key to return value of property 1

    setvariable1() - This should allow new value to be specified for property 1 - additional parameter needed to accept input.

    printerfun() - to print values of the variables for the object.

    Create your own object of the class and call get & set methods for the object created. Use printerfun() method to check if the codes works.

    My working:

    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) 
    
  • Kesh K
    Kesh K about 11 years
    I do get the idea of class behaving as a blue print under which objects are given. We can create further instances from this blueprint and create unique objects. More or less my grasp, hope am right. It is the question that I am unable to figure out answering it using the 3 functions given.