
class Thing:
    pass

class Thing2:
    letters = 'abc'

class Thing3:
    letters = 'xyz'

class Element:
    def __init__(self, name, symbol, number) -> None:
        self.__name = name
        self.__symbol = symbol
        self.__number = number

    def get_name(self):
        return self.__name
    
    def get_symbol(self):
        return self.__symbol
    
    def get_number(self):
        return self.__number

    def __str__(self):
        return f'Name: {self.__name}, Symbol: {self.__symbol}, Number: {self.__number}'

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
class Bear:
    def eats(self):
        return 'berries'

class Rabbit:
    def eats(self):
        return 'clover'

class Octothorpe:
    def eats(self):
        return 'campers'

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Laser:
    def does(self):
        return 'disintegrate'

class Claw:
    def does(self):
        return 'crush'
    
class SmartPhone:
    def does(self):
        return 'ring'
    
class Robot:
    laser = Laser()
    claw = Claw()
    phone = SmartPhone()

    def does(self):
        print('Laser:', self.laser.does())
        print('Claw:', self.claw.does())
        print('SmartPhone:', self.phone.does())


def ex1():
    foo = Thing()
    # print(Thing)
    # print(foo)
    # print(Thing2.letters)
    # print(Thing3.letters)

    elem1 = Element('Hydrogen', 'H', '1')
    my_dict = {'name': 'Hydrogen', 'symbol': 'H', 'number': 1}
    elem2 = Element(my_dict['name'], my_dict['symbol'], my_dict['number'])
    # elem2.dump()
    print(elem2)

    robot = Robot()
    robot.does()

ex1()