21.12.2022 Views

python_para_desenvolvedores_2ed

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

114 Classes

class Calc:

def __init__(self, formula, **vars):

self.formula = formula

self.vars = vars

self.__recalc()

def __recalc(self):

self.__res = eval(self.formula, self.vars)

def __repr__(self):

self.__recalc()

return str(self.__res)

formula = '2*x + 3*y + z**2'

calc = Calc(formula, x=2, y=3, z=1)

print 'fórmula:', calc.formula

print 'x =', calc.vars['x'],'-> calc =', calc

calc.vars['x'] = 4

print 'x =', calc.vars['x'],'-> calc =', calc

print dir(calc)

Saída:

fórmula: 2*x + 3*y + z**2

x = 2 -> calc = 14

x = 4 -> calc = 18

['_Calc__recalc', '_Calc__res', '__doc__', '__init__', '__module__', '__repr__',

'formula', 'vars']

O método __recalc() aparece como _Calc__recalc() e o atributo __res como

_Calc__res para fora do objeto.

Classes abertas

No Python, as classes que não são builtins podem ser alteradas em tempo de

execução, devido a natureza dinâmica da linguagem. É possível acrescentar

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!