2012-12-06 5 views
1

Je travaille sur une affectation pour Python Programming 157 à mon école. Je besoin d'écrire une classe appelée Pet qui a les données suivantes attributs:Python Class Pet Program

__name (for the name of the pet) 
__animal_type (Examples: "Cat", "Dog", and "Hamster") 
__age (for the pet's age) 
__height (for the pet's height) 

Il doit inclure

set_name 
get_name 

J'ai essayé comme 4 fois et ne peut pas sembler pour obtenir ce droit ... des indices sur le démarrage? Ci-dessus est ma dernière tentative ... pas de chance ... une aide? Merci d'avance ...

+1

Vous devriez lire sur la programmation orientée objet en Python: http://www.python-course.eu/object_oriented_programming.php – Bharat

+0

Il serait utile que vous pouvez formater votre code afin qu'il ressemble à un code. Indentez-le avec quatre espaces. C'est juste une grosse course en ligne en ce moment ... –

+0

N'essayant pas d'être méchant du tout, mais je vous suggère de lire sur vos notes/lecture quand cela a été couvert. Il y a quelques petites choses qui vont provoquer un comportement inattendu (à savoir comment chacune de vos méthodes réinitialise la même variable). – RocketDonkey

Répondre

4

Un class n'est pas un programme, un class devrait modéliser une chose, comme un animal de compagnie. Par conséquent, pour commencer, vous devez nommer votre classe de manière appropriée.

class Pet(object): # Pet derives from the object class, always do this 

Maintenant, je pense que vous voulez un constructeur qui prend le nom de l'animal, et peut-être le type d'animal de compagnie, donc nous allons définir cela.

def __init__(self, pet_name, pet_type): 
     self.pet_name = pet_name 
     self.pet_type = pet_type 

Vous devez également get et set le nom:

def get_name(self): 
     return self.pet_name 

    def set_name(self, pet_name): 
     self.pet_name = pet_name 

Pour utiliser cette classe, vous instancier dans une instance de la classe:

puppy = Pet('Rover', 'Dog') 
    puppy.get_name() # prints Rover 

J'espère que ce assez pour vous y mettre. Vous devriez lire sur OOP en Python comme mentionné dans les commentaires.

+0

+1 - c'est probablement mieux/plus concis que les notes que j'ai mentionnées :) – RocketDonkey

+0

Merci beaucoup les gars, j'ai été perdu tout le semestre, l'enseignant est flambant neuf et n'aide pas vraiment trop ou semble savoir beaucoup donc je l'apprécie vraiment !! – Marcus

1

Tout d'abord, pourquoi utilisez-vous "privé" __attributes? Cela ne semble pas justifié.

Deuxièmement, vous affectez toutes vos propriétés à la même variable d'instance:

self.__pets = pet 
self.__pets = name 
self.__pets = age 
self.__pets = animal 
self.__pets = height 

Vous devez utiliser quelque chose comme

def __init__(self, pet, name, age, animal, height): 
    self.pet = pet 
    self.name = name 
    self.age = age 
    self.animal = animal 
    self.height = height 

et vous devriez lire le tutorial on classes certainement avant de vous aventurer plus loin .

0

Je ne sais pas où la liaison __pets entre en jeu. Votre description initiale ne dit rien à ce sujet. Je n'aurais pas attendu un objet qui représente un animal de compagnie, comme dans un animal de compagnie singulier, d'avoir un attribut qui était une liste d'animaux de compagnie. J'attends quelque chose comme:

class PetProgram: 
    def __init__(self, name ='', age=0, type='Unknown', height=0): 
     self.__name = name 
     self.__age = age 
     self.__animal_type = type 
     self.__height = height 

    def get_name(self): 
     return self.__name 

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

Je suis également pas sûr où les importations petprogram provient de ... est que par hasard ce que votre supposé appeler votre module, puis l'instructeur a fourni que quelque chose que vous est censé courir pour le tester?

(aussi, ce qui est avec tous les __under_scores? Est-ce quelque chose que votre professeur est encourageant?)

+0

Oui, mon professeur a quelque chose de très similaire à titre d'exemple et je ne pouvais pas pour la vie de moi comprendre. Le (__) et le 'import' étaient tous deux dans l'exemple de ce qu'il fallait faire ... Je ne sais pas trop pourquoi ... – Marcus

0

Comment quelque chose comme ça ressemble?

>>> class Pets: 
def set_Name(self,name): 
    self.name=name 
def get_Name(self): 
    return self.name 
def set_Atype(self,atype): 
    self.atype=atype 
def get_Atype(self): 
    return self.atype 
def set_Age(self,age): 
    self.age=age 
def get_Age(self): 
    return self.age 
def set_Height(self,height): 
    self.height=height 
def get_Height(self): 
    return self.height