Home Classes and inheritance in Python 3.6 (Spyder)
Reply: 0

Classes and inheritance in Python 3.6 (Spyder)

user7068
1#
user7068 Published in September 19, 2018, 9:08 am

I have beginner Python question. I have a superclass called "Animal", and I'm using inheritance to create a "Dog" class.

 class Animal:
    __name = ""
    __height = 0
    __weight = 0
    __sound = 0

    #constructor
    def __init__(self, name, height, weight, sound):
        self.__name = name
        self.__height = height
        self.__weight = weight
        self.__sound = sound

    def set_name(self,name):
        self.__name = name

    def get_name(self):
        return self.__name

    def set_height(self,height):
        self.__height = height

    def get_height(self):
        return self.__height

    def set_weight(self,weight):
        self.__weight = weight

    def get_weight(self):
        return self.__weight

    def set_sound(self,sound):
        self.__sound = sound

    def get_sound(self):
        return self.__sound

    def get_type(self):
        print("Animal")

    def toString(self):
        return "{} is {} cm tall and {} kg and says 
{}".format(self.__name,self.__height,self.__weight,self.__sound)

human = Animal("Rover",55,25,"woof")

print(human.toString())

#Inheritance
class Dog(Animal):
    __owner = "" #Inherit all variables from Animal class. Add an owner 
 variable. Every dog class has an owner variable, but not every
             #animal class has an owner variable.

    #overwrite the constructor 
    def __init__(self, name, height, weight, sound, owner):
        self.__owner = owner
        super(Dog,self).__init__(name, height, weight, sound) #let Animal 
superclass handle the other variables.

    def set_owner(self,owner):
        self.__owner = owner

    def get_owner(self):
        return self.__owner

    def get_type(self):
        print("Dog")

    def toString(self):
        return "{} is {} cm tall and {} kg and says {}. His owner is 
{}".format(self.__name,self.__height,self.__weight,self.__sound,self.__owner)

 myDog = Dog("Rover",55,25,"woof","Alex")

 print(myDog.toString())

I am getting the following error:

AttributeError: 'Dog' object has no attribute '_Dog__name'

Is the Dog subclass somehow not able to inherit the name variable from the Animal superclass?

I'm using Python 3.6 with Spyder 3.2.3

share|improve this question
  • you overwrite the constructor. What do you expect that to do? – Dschoni Apr 16 at 12:42

1 Answer 1

active oldest votes
up vote 2 down vote
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.528688 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO