![]() |
File "<string>", line 19, in <module> error is related to what? - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: File "<string>", line 19, in <module> error is related to what? (/thread-36192.html) |
File "<string>", line 19, in <module> error is related to what? - Frankduc - Jan-26-2022 Hello, I am trying to understand what is going on: class Portfolio: def __int__(self): self.holdings = {} #key = ticker, Value = number of shares def buy(self, ticker, shares): self.holdings[ticker] = self.holdings.get(ticker, 0) + shares def sell(self, ticker, shares): self.holdings[ticker] = self.holdings.get(ticker, 0) - shares def __iter__(self): return iter(self.holdings.items()) p = Portfolio() p.buy('Alpha', 15) p.buy('Beta', 23) p.buy('Gamma', 9) p.buy('Gamma', 20) p.sell('Beta', 5) for (ticker, shares) in p: print(ticker, shares)According to the errors output: I am missing a module? But which one?Thank you RE: File "<string>", line 19, in <module> error is related to what? - menator01 - Jan-26-2022 My guess is you have a hidden character. I tried your code from copy and paste and got the same error but, when I typed it in it worked as expected. class Portfolio: def __init__(self): self.holdings = {} def buy(self, ticker, shares): self.holdings[ticker] = self.holdings.get(ticker, 0) + shares def sell(self, ticker, shares): self.holdings[ticker] = self.holdings.get(ticker, 0) - shares def __iter__(self): return iter(self.holdings.items()) p = Portfolio() p.buy('Alpha', 15) p.buy('Beta', 23) p.buy('Gamma', 9) p.buy('Gamma', 20) p.sell('Beta', 5) str_len = len(max(p)[0]) for (ticker, shares) in p: if len(ticker) < str_len: spacer = ' '*(str_len - len(ticker) + 2) else: spacer = ' '*2 print(f'{ticker} {spacer} {shares}')
RE: File "<string>", line 19, in <module> error is related to what? - Frankduc - Jan-26-2022 (Jan-26-2022, 04:41 PM)menator01 Wrote: My guess is you have a hidden character. Thanks menator for solving that. Which i knew where it came from, from the start. RE: File "<string>", line 19, in <module> error is related to what? - deanhystad - Jan-26-2022 __init__ not __int__. Hard to see because you often see what you expect to see, not what is really there. If an attribute created in __init__() is not in the object, test if __init__() is called. class Portfolio: def __int__(self): print("Enter __init__()") self.holdings = {} #key = ticker, Value = number of shares print("Leave __init__()")When I created a Portfolio object it didn't print anything. That means __init__() wasn't called. Knowing that it didn't take long to find the error. RE: File "<string>", line 19, in <module> error is related to what? - Frankduc - Jan-27-2022 (Jan-26-2022, 07:29 PM)deanhystad Wrote: __init__ not __int__. Hard to see because you often see what you expect to see, not what is really there. I saw with the Python tutor https://pythontutor.com/visualize.html#mode=display something was wrong with that part of the code: def __int__(self): It also return AttributeError: 'Portfolio' object has no attribute 'holdings' How to solve it is something else. I am not sure what is going on here: str_len = len(max(p)[0]) for (ticker, shares) in p: if len(ticker) < str_len: spacer = ' '*(str_len - len(ticker) + 2) else: spacer = ' '*2 print(f'{ticker} {spacer} {shares}')Menator spoke about a hidden character. RE: File "<string>", line 19, in <module> error is related to what? - deanhystad - Jan-27-2022 Menator was wrong. It was a missing character, not a hidden character. He didn't see the method name was __int__ either. What part of the code are you confused about? Be more specific. Stop using "reply" all the time. Haven't you noticed that nobody uses it when replying to your posts? Use "Quick Reply" and if it is unclear what post you are replying to, reference the poster's name or copy/paste/quote the part you are referencing. Replying to everything ends up making really long threads that are annoying to read. RE: File "<string>", line 19, in <module> error is related to what? - Frankduc - Jan-27-2022 But what is missing in the code to make that part work? for (ticker, shares) in p: print(ticker, shares)Anyway ill find out soon or later thanks RE: File "<string>", line 19, in <module> error is related to what? - deanhystad - Jan-27-2022 The thing that was missing was the second "i" in "__init__()". Your Portfolio class did not have an __init__() method because you made a mistake when typing the method name. Instead you wrote a __int__() method which was never used. When you created a Portfolio object Python looked to see if the Portfolio class has an __init__() method. It did not because of your typing error. This resulted in the holdings dictionary never being created. What is your question about this code? for (ticker, shares) in p: print(ticker, shares)If you fix the typing error in the Portfolio.__init__() method name the loop will work. If you don't fix the method name your program never reaches this point in the code because it crashes when you call Portfolio.buy(). RE: File "<string>", line 19, in <module> error is related to what? - Frankduc - Jan-27-2022 To say i tripled check and more to see if there was mistyping. Its not this code it is the one provided by menator: str_len = len(max(p)[0]) for (ticker, shares) in p: if len(ticker) < str_len: spacer = ' '*(str_len - len(ticker) + 2) else: spacer = ' '*2 print(f'{ticker} {spacer} {shares}')str is for string and len is for length (maximum(p)) Whatever i thought it was his solution to solve the mystery behind the absence of output and error returned. When actually it is just a way to create a space between the porfolio stocks and prices in the output. Sometimes i can be dense! ![]() Thanks dean RE: File "<string>", line 19, in <module> error is related to what? - LocklearSusan - Mar-09-2023 It's strange that you're seeing the identical network issue on two systems that are purportedly completely distinct from one another. It's possible that it was merely a coincidence. Nerdle is a fun and challenging way to sharpen your analytical and numerical prowess. Are you able to recall anything that altered itself about the same time that this phenomenon began to take place? |