Issue
I'm writing a simple code snippet here, but unable to run the code
class test:
def __init__(self):
pass
def functiona(self, a):
b = a+0
print(b)
def functionb(self):
a = 5
self.functiona(a)
test.functionb('abc')
It errors out with "AttributeError: 'str' object has no attribute 'functiona'" Unable to call it with self. However, if I provide test.functiona(a) it works fine.
Few of other code samples works with self.function, how to solve this issue
Solution
test.functionb('abc')
is a function call on the class, not on an instance.
I suppose it works if you do test().functionb('abc')
?
The difference is:
- In your case, you call the function object on the class. As it is not a staticmethod or classmethod, it is called with
self = 'abc'
, a string. This string hasn't a methodfunctiona()
. - In my case, the call operates on a class instance. Here,
self
is set to the instance you just created – and you get an error because it doesn't know where to pass the'abc'
.
Answered By - glglgl
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.