-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
'Solution' #830
base: master
Are you sure you want to change the base?
'Solution' #830
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,43 @@ | ||
from typing import Union | ||
|
||
|
||
class Distance: | ||
# Write your code here | ||
pass | ||
def __init__(self, km: float) -> None: | ||
self.km = km | ||
|
||
def __str__(self) -> str: | ||
return f"Distance: {self.km} kilometers." | ||
|
||
def __repr__(self) -> str: | ||
return f"Distance(km={self.km})" | ||
|
||
def __add__(self, other: Union[int, float, "Distance"]) -> object: | ||
if isinstance(other, Distance): | ||
self.km += other.km | ||
else: | ||
self.km += other | ||
return self | ||
|
||
def __mul__(self, other: int | float) -> object: | ||
return Distance(self.km * other) | ||
|
||
def __truediv__(self, other: int | float) -> object: | ||
return Distance(round(self.km / other, 2)) | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. in mul and truediv methods other can be int or float, in the rest of the methods int, float or an instance of the Distance class. Add logic to handle cases when other is an instance of the Distance class and fix type hints. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I avoided unnecessary logic, as I was advised last time, there were 110 questions in the test, which my solution passed successfully, how can I understand where the logic is excessive and where it is insufficient? |
||
def __eq__(self, other: Union[int, float, "Distance"]) -> bool: | ||
if isinstance(other, Distance): | ||
return self.km == other.km | ||
elif isinstance(other, (int, float)): | ||
return self.km == other | ||
|
||
def __lt__(self, other: Union[int, float, "Distance"]) -> bool: | ||
return self.km < other | ||
|
||
def __gt__(self, other: Union[int, float, "Distance"]) -> bool: | ||
return self.km > other | ||
|
||
def __le__(self, other: Union[int, float, "Distance"]) -> bool: | ||
return self.km <= other | ||
|
||
def __ge__(self, other: Union[int, float, "Distance"]) -> bool: | ||
return self.km >= other |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Change your type annotation to use the latest syntaxis. Besides that, be more specific in the return type annotation, in Python everything is an object:
Apply this change to all places where applicable. In case you face incompatibility errors, use
from __future__ import annotation
.