15.12.2022 Views

Python Eficaz

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

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

prova abrangendo mais de um assunto, cada um com uma nota em separado.

class Exam(object):

def __init__(self):

self._writing_grade = 0

self._math_grade = 0

@staticmethod

def _check_grade(value):

if not (0 <= value <= 100):

raise ValueError('Grade must be between 0 and 100')

Rapidamente, o problema começa a não ficar mais tão divertido. Cada seção da

prova precisa de um novo @property e validação apropriada.

@property

def writing_grade(self):

return self._writing_grade

@writing_grade.setter

def writing_grade(self, value):

self._check_grade(value)

self._writing_grade = value

@property

def math_grade(self):

return self._math_grade

@math_grade.setter

def math_grade(self, value):

self._check_grade(value)

self._math_grade = value

Além disso, essa abordagem não é generalista. Se quisermos reutilizar esta

validação de percentagem em outra coisa que não seja lição de casa ou prova,

será necessário repetir inúmeras vezes, em pontos diferentes, os mesmos trechos

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!