15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

existentes.

Limitações da namedtuple

Embora seja útil em muitas circunstâncias, é importante identificar as

situações em que uma namedtuple pode causar mais dano que benefício.

• Não é possível especificar valores default para argumentos em classes

namedtuple. Isso as torna inadministráveis quando os dados têm muitas

propriedades opcionais. Se perceber que está usando mais que um punhado

de atributos, definir sua própria classe pode ser uma escolha melhor.

• Os valores de atributo das instâncias de namedtuple ainda estão acessíveis por

índices numéricos e iteradores. Especialmente em uma API externa, isso

pode levar a um uso não intencional que torna difícil a migração para uma

classe de verdade no futuro. Se você não tem controle sobre quem vai usar

suas instâncias de namedtuples, é melhor definir desde já sua própria classe.

A seguir, você pode escrever uma classe para representar uma única disciplina

que contenha um conjunto de notas.

class Subject(object):

def __init__(self):

self._grades = []

def report_grade(self, score, weight):

self._grades.append(Grade(score, weight))

def average_grade(self):

total, total_weight = 0, 0

for grade in self._grades:

total += grade.score * grade.weight

total_weight += grade.weight

return total / total_weight

Depois, escreva uma classe para representar um conjunto de disciplinas sendo

cursadas por um único aluno.

class Student(object):

www.full-ebook.com

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

Saved successfully!

Ooh no, something went wrong!