Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
FIDBEck ON MY CODE IN OOP
#1
HI
can some on can give me fidback ?

class Animal(object):
    
    def __init__(self,name,hunger=0):
        self.hunger=hunger
        self.name=name
        
    def Get_hunger(self):
        return self.hunger
    
    def Feed (self):
        self.hunger-=1
    
    def Get_name (self):
        return self.name 

    def  Is_hungry (self):
        if self.hunger>0:
            return True
        else:
            return False
            
    def Talk (self):
        return self.bark

class Dog(Animal):
    def self_talk(self):
        return "bark bark bark"
    def fetch_stick(self):
        return "There you go, sir!"
    
class Cat(Animal):
     def self_talk(self):
        return "meow"

     def chase_laser(self):
        return "Meeeeow"

class Skunk(Animal):
    def self_talk(self):
        return "tsssss"
    
    def stink(self):
        return "Dear lord!"

class Unicorn(Animal):
    def self_talk(self):
        return "Good day, darling"
    
    def sing(self):
        return "I’m not your toy..."

class Dragon(Animal):
    def self_talk(Animal):
        return "Raaaawr"
    
    def breath_fire(self):
        return "$@#$#@$	"

def main():
    Brownie=Dog("Brownie",10)
    Zelda=Cat("Zelda",3)
    Stinky=Skunk("Stinky",0)
    Keith=Unicorn("Keith",7)
    Lizzy=Dragon("Lizzy",1450)
    zoo_lst=[]
    zoo_lst.append(Brownie)
    zoo_lst.append(Zelda)
    zoo_lst.append(Stinky)
    zoo_lst.append(Keith)
    zoo_lst.append(Lizzy)
    zoo_lst.get_name()
    zoo_lst=[]            

    for animal in zoo_lst:
        while animal.is_hungry()==True:
            animal.feed()
    Dragon.self_talk()
Reply
#2
Some feedback:

# it is not necessary to inherit from object (are you still using Python2?)
class Animal(object): 
    # docstring expected
 
    def __init__(self, name, hunger=0): # spaces 
        self.hunger = hunger  # spaces 
        self.name=name   # spaces, etc.
         
    def Get_hunger(self):  # non pep8 compliant method name
        return self.hunger  # why do you need this method to be defined ?
                            # you can get hunger intensity just as self.hunger!
    def Feed (self):  # non pep8 compliant method name
        self.hunger -= 1
     
    def Get_name (self): #  it is not needed; just use self.name 
        return self.name #(why do you need get_name?)
 
    def  Is_hungry (self): # non pep 8 comp.
        if self.hunger > 0: # spaces; you can simplify this: "return self.hunger > 0"
            return True
        else:
            return False
             
    def Talk (self):  # non pep8
        return self.bark  # bark attribute is not defined.

# two blank spaces between class declarations 

class Dog(Animal):
    #docstring?

    def self_talk(self):
        return "bark bark bark"
    
    # blank line between methods
    def fetch_stick(self):
        return "There you go, sir!"
     
class Cat(Animal):
     def self_talk(self):
        return "meow"
 
     def chase_laser(self):
        return "Meeeeow"
 
class Skunk(Animal):
    # docstring?

    def self_talk(self):
        return "tsssss"
     
    def stink(self):
        return "Dear lord!"
 
class Unicorn(Animal):
    def self_talk(self):
        return "Good day, darling"
     
    def sing(self):
        return "I’m not your toy..."
 
class Dragon(Animal):
    def self_talk(Animal):
        return "Raaaawr"
     
    def breath_fire(self):
        return "$@#$#@$ "
 
def main():
    Brownie=Dog("Brownie", 10)  # names non-pep8 compl.
    Zelda=Cat("Zelda", 3)
    Stinky=Skunk("Stinky", 0)  # spaces
    Keith=Unicorn("Keith",7)
    Lizzy=Dragon("Lizzy",1450)
    zoo_lst = []  #  [Brownie, Zelda, ...] instead of appends
    zoo_lst.append(Brownie)
    zoo_lst.append(Zelda)
    zoo_lst.append(Stinky)
    zoo_lst.append(Keith)
    zoo_lst.append(Lizzy)
    zoo_lst.get_name()   #  You got a name, and what? (you don't use it)
    zoo_lst=[]   # your list is empty now!
 
    for animal in zoo_lst:
        while animal.is_hungry()==True:  #is_hungry might be property, you don't need to type '==True'
            animal.feed()
    Dragon.self_talk()

# you probably want to use main() within if __name__ == "__main__": block.
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020