Δημοσιεύτηκε: 07 Οκτ 2009, 01:14
από sokoban4ever
@malos
και στις δυο περιπτώσεις θα σου βγάλει NameError
είτε
NameError: global name 'name' is not defined
είτε
NameError: global name 'onoma' is not defined

Στο function definition --> def __init__(self,name):
το name είναι ένα argument (και παρεμπιπτόντως positional argument) απλά για να μεταφέρει στο εσωτερικό της __init__ την μεταβλητή
όπως και να λέγεται αυτή .

Όταν κάνεις self.κάτι
δεν έχει σημασία πως λέγεται είτε είναι method ( --> μέθοδος ή συνάρτηση ) είτε είναι attribute ( --> ιδιότητα ή μεταβλητή )
φτάνει να είσαι συνεπείς και να το χρησιμοποιείς με το όνομα του
και όχι να το δηλώνεις την μιά self.onoma και μετά να προσπαθείς να το προσπελάσεις με self.name

Κώδικας: Επιλογή όλων

class person:
def __init__(self,tsoumbaouamba):
self.trislalounkaidioxoreoun =tsoumbaouamba
def sayhi(self):
print ('hello ,my name is ',self.trislalounkaidioxoreoun)
def __onomataki__(self):
return self.trislalounkaidioxoreoun
def __pou_anikeis__(self):
return self # και print self κάνει ...

Κώδικας: Επιλογή όλων

>>> p=person('Mbambis')
>>> p.sayhi()
('hello ,my name is ', 'Mbambis')
>>> p.__onomataki__()
'Mbambis'
>>> p.__pou_anikeis__()
<__main__.person instance at 0x28b2ef0>
>>> p.trislalounkaidioxoreoun
'Mbambis'



Δες εδώ
http://docs.python.org/tutorial/classes.html
για περισσότερα