25
How is my Python code?
(raw.githubusercontent.com)
Welcome to the Python community on the programming.dev Lemmy instance!
Past
November 2023
October 2023
July 2023
August 2023
September 2023
Nice work! Here are a few notes:
The
WeatherAppobject has a mix of attributes with long-term (egself.LOCATIONS) and short-term (egself.city) relevance. Instance attributes introduced in places other than__init__, which makes it non-trivial for a reader to quickly understand what the object contains. And, actually,self.{city,lat,lon}are all only used from theadd_citymethod so they could/should be local variables instead of instance attributes (just remove theself.from them).There seem to maybe be some bugs around when things are lowercase and when not; for example checking
if self.city.lower() in self.LOCATIONSbut then when writing there the non-lowerself.ctiyis used as the key toself.LOCATIONS.The code under
if rep == "1"andelif rep == "2"is mostly duplicated, and there is noelsebranch to cover ifrepis something other than 1 or 2.It looks like the config only persists favorites so far (and not non-favorite cities which the user can add) which isn't obvious from the user interface.
Passing both
locationandlocationsintoWeatherAPIso that it can look uplocations[location]is unnecessary; it would be clearer to pass in the dict for the specific location. It would also be possible to avoid the need forLOWLOCATIONSby adding a non-lowercasenamekey to the per-location dictionaries that just havelatandlonright now, and then keepingLOCATIONSkeyed by the lowercase names.HTH! happy hacking :)
That's very informative, I will rewrite the code with your suggestions. Thank you!