4. Feladat

speciális method-ok

Egészítsük ki a mintapéldában definiált Robot osztályt egy __mul__ függvénnyel! Ez lehetővé teszi két Robot összeszorzását a "*" operátorral. A szorzat eredménye egy harmadik Robot legyen, melynek a neve a szorzatban résztvevő robotok neveinek egymás után fűzése.

Megoldás

Egyszerűen a Robot osztályban definíáljuk a __mul__ függvényt, ami eredményként olyan robotot hoz létre, amely inicializálásakor a kapott paraméter a két eredeti robot nevének összege:

In [1]:
class Robot:
    '''
    Ez egy robot osztály!
    A robot születésekor már adhatunk nevet!
    A robotot később átnevezhetjük!
    Minden robot neve a saját objektumában a name változoóban van.
    Minden robotot gyártó cég neve a robot_company osztályváltozóban van.
    '''

    robot_company='ELTE robot company'    
    total_number_of_robots_created=0
    
    def __init__(self,name=None):
        
        Robot.total_number_of_robots_created+=1
        print('Most szuletik egy robot!')
        self.name=name
        if name:
            print('Ezt a robotot úgy hívják, hogy '+str(name)+' !')
        else:
            print('Ennek a robotnak még nincs neve... :(')
            
    def set_name(self,name):
        '''
        Ezzel a függvénnyel meg tudjuk változtatni a robot nevét.
        '''
        print('Megváltozott a nevem '+str(name)+'-re!')
        self.name=name
    
    def __mul__(self, other):   # Itt definiáljuk az új függvényt
        return Robot(self.name + other.name)

Ezt leellenőrizve:

In [2]:
r1 = Robot('első')
r2 = Robot('második')
r3 = r1*r2
print("r3 neve: " + r3.name)
Most szuletik egy robot!
Ezt a robotot úgy hívják, hogy első !
Most szuletik egy robot!
Ezt a robotot úgy hívják, hogy második !
Most szuletik egy robot!
Ezt a robotot úgy hívják, hogy elsőmásodik !
r3 neve: elsőmásodik