-
Notifications
You must be signed in to change notification settings - Fork 750
Open
Description
The execution of this example fails, since count is assigned to average:
from dataclasses import dataclass
@dataclass
class Stats:
minimum: float
maximum: float
average: float
median: float
count: int
def get_stats_obj(numbers):
return Stats(
minimum=min(numbers),
maximum=max(numbers),
count=len(numbers),
average=sum(numbers) / count,
median=get_median(numbers),
)
result = get_stats_obj(lengths)
print(result)
Output:
13 def get_stats_obj(numbers):
14 return Stats(
15 minimum=min(numbers),
16 maximum=max(numbers),
17 count=len(numbers),
---> 18 average=sum(numbers) / count,
19 median=get_median(numbers),
20 )
NameError: name 'count' is not defined
Suggestion 1: define a variable count and assign it to the attribute:
@dataclass
class Stats:
minimum: float
maximum: float
average: float
median: float
count: int
def get_stats_obj(numbers):
count = len(numbers)
return Stats(
minimum=min(numbers),
maximum=max(numbers),
count= count,
average=sum(numbers) / count,
median=get_median(numbers),
)
result = get_stats_obj(lengths)
print(result)
Suggestion 2: replace average=sum(numbers) / count, by average=sum(numbers) / len(numbers),
Metadata
Metadata
Assignees
Labels
No labels