Vraag : Het roepen van een pythonmethode van een klasse

Ik heb geprobeerd lezend pythondoc. op klassen, voorwerpen en gegevensmodellen maar ik word het niet nog - ik veronderstel dat de gevorderde programmeurs klassen moeten schrijven maar voor wat ik kan doen, schijnt het schrijven van een klasse om dingen moeilijker te maken dan zij aan be.

I am proberend om een programma te schrijven dat me vereist om een geval van een klasse van de „Hond“ met de naam van de hond tot stand te brengen en als argumenten te kweken, en het voorwerp toe te voegen aan de honden een lijst maken van vereisen. Voor elke die gebruiker op de naam en het ras wordt ingevoerd, zou de huidige hondenlijst de naam en het ras van elke hond moeten drukken, voorbeeld:
#DOGS
0. Snoopy: Beagle
1. Marmaduke: Grote Dane
2. Rover: Mutt

I kan niet berekenen hoe te om de functie te roepen zodat ben ik niet zeker als het probleem met de manier is ik probeer om de functie of de manier te roepen dat ik de methodes in de klasse heb geschreven. Enkele begeleiding was vrij specifiek, bijvoorbeeld zou de init () methode twee parameters, naam en ras, naast impliciete zelf moeten nemen.  

I heeft de fouten hieronder met de beledigende code gekopi�ërd, en ik begrijp niet de fouten (als ik, veronderstel ik ik dit) kon bevestigen.
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
van
class Hond:

    def __init (zelf, naam, ras):
        self.name = de „Naam van de Hond“
        self.breed = het „Ras van de Hond“
        self.dog_list = []

    # omdat de „honden“ in add_dog (honden **) niet gedefiniëerd bleken,  
    # niet zeker waarom…
    def keywords_as_dict (honden **):
        terugkeer honden
       
    def add_dog (honden **):
	terwijl Waar:
            probeer:
                naam = raw_input („ga hondnaam in: “)
                ras = raw_input („ga hondras in: “)

    		voor naam, ras in dogs.items ():
            	    my_dog = (name.capitalize () + „: “ + breed.capitalize ())
                    druk (my_dog)
                    dog_list.append (my_dog)
	    
	    behalve naam == '':
                druk („het Weggaan programma“)

        terugkeer honden, dog_list
                           
als __name == „__main“:
    nul = Hond (name='Lassie', breed='Retriever') # of 
    één = Hond („Lassie“, „Retriever“)
    druk (nul,) 
    # drukken<__main__.Dog instantie bij wat hexuitdraai code> voor elk
    Dog.add_dog () # neemt de typefout, methode 0 args 
    Dog.add_dog () # of
    Dog.add_dog („Goofy“, „straathond“) # of 
    Dog.add_dog (name='Goofy', breed='mutt') # typefouten,
    # maakte methodes los moet met klasseninstantie als eerste argument worden geroepen

Antwoord : Het roepen van een pythonmethode van een klasse

Lijn 8 leidt tot geen „Hond“

in plaats van:

my_dog = (name.capitalize () + „: “ + breed.capitalize ())

U hebt iets als nodig:

my_dog = achtervolg (name.capitalize (), breed.capitalize ());

Hoe over iets als:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
klassen Hond ():
  def __init (zelf, naam, ras):
    self.name = naam;
    self.breed = ras;
  def getName (zelf):
    terugkeer self.name;
  def getBreed (zelf):
    terugkeer self.breed;

als __name == „__main“:
  kennel = [];             # Cre�ër een lege lijst van honden
  terwijl Waar:
    naam = raw_input („Naam: “) .strip ();
    als naam:
      ras = raw_input („Ras: “) .strip ();
      als ras:
        kennel.append (Hond (name.capitalize (), breed.capitalize ()));
    anders:
      onderbreking;
  druk „\ nDogs: \ n“ + („-“ * 40);
  voor I in waaier (len (kennel)):
    hond = kennel [I];
    druk „%d. %s: %s“ % (I, dog.getName (), dog.getBreed ());

anders:
  druk „Fout - voer dit manuscript uit, invoeren het niet. \ n“;
  druk „python %s.py“ % __name;
Andere oplossingen  
 
programming4us programming4us