OOP a opička (16.lekce) – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

OOP a opička (16.lekce) – Python – Fórum – Programujte.comOOP a opička (16.lekce) – Python – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
maral
~ Redaktor
0
Newbie
2. 2. 2008   #1
-
0
-

Dělal jsem program z 16. lekce kurzu python s opičkou, a narazil jsem na problém. Když si v metodě třídy opička chci uložit jméno do self.nick, a pak to použiju v testu if, tak mi python řekne, že self je jakoby celá třída opicka a ne daná metoda.

class opicka:

def promluv (self):
print "Ja su mrte opicka."
def jmeno (self, nazev=None):
if nazev:
self.nick=nazev
elif self.nick!="" and nazev==None: #tady testuju, jestli existuje self.nick a jestli nema prikaz atribut, a pak tisknu to jmeno self.nick
print self.nick
Vypíše mi to tenhle error (jméno opice jsem přiřadil té instanci)
Traceback (most recent call last):
File "/home/marek/python/oop.py", line 13, in <module>
opice.jmeno()
File "/home/marek/python/oop.py", line 9, in jmeno
elif self.nick!="" and nazev==None:
AttributeError: opicka instance has no attribute 'nick'

Tak se chci zeptat, jak to mám zformulovat, abych se v testu if, resp. elif mohl zeptat na existenci té proměnné instance self.nick
Díky

Nahlásit jako SPAM
IP: 85.132.176.–
Reklama
Reklama
Blujacker
~ Moderátor
0
Grafoman
2. 2. 2008   #2
-
0
-

To maral :



class opicka:
def __init__(self):
self.nick="lenka"
def promluv (self):

print "Ja su mrte opicka."

def jmeno (self, nazev=None):
if nazev:
self.nick=nazev
else:
print "Jmenuju se :",self.nick
o=opicka()
o.jmeno()
o.jmeno("eva")
o.jmeno()

tobě to tu chybu házelo, protože si neměl proměnnou self.nick definovanou.

Nahlásit jako SPAM
IP: 213.220.226.–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Merlin0
Duch
2. 2. 2008   #3
-
0
-

Lenže pokiaľ nazev nezadáte self.nick ešte neexistuje a nemôžete ju použiť v podmienke.
Najprv meno musí mať, aby Vám ho mohla povedať.

A stačí použiť iba:

if nazev:
...
else:
...

Nahlásit jako SPAM
IP: 78.99.101.–
Python, GML, C++, Pascal..... ???
maral
~ Redaktor
0
Newbie
3. 2. 2008   #4
-
0
-

Jo díky... Já jen nevěděl, kde mám tu proměnnou inicializovat.
A tu podminku jsem měl takhle blbě udělanou, protože jsem to udělal i jinak a nešlo to a zkopiroval jsem tam ten kod, když to bylo zrovna takhle.

Nahlásit jako SPAM
IP: 85.132.176.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 17 hostů

Podobná vlákna

2. lekce — založil Martin

3.lekce — založil PySaK.jAn

Oop — založil dragon124

11. lekce — založil nestor

9.lekce — založil P1trs

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý