Another thought comes to mind... On Sun, Jun 17, 2018 at 02:02:07PM -0400, C W wrote:
> Obviously, the second case does not make any senses. But, in data.columns, > it is only correct to do without parenthesis as below: > > > data.columns [...] > # with parenthesis throws an error > > data.columns() That's because data.columns isn't a method. Since it isn't a method, it is just a regular attribute (or possibly a read-only attribute) that you can retrieve the contents, but not call. Some languages call these "instance variables". I don't like that term, but in this case the analogy with variables is good. Consider two named objects, one which is a function, one which is not: py> len <built-in function len> py> len("hello world") # try calling len 11 py> length = 99 py> length() # try calling length Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not callable The reason for this should be fairly obvious, but I trust you can see that *in general* there is no fool-proof way of knowing which names refer to callable functions and which refer to non-callable values. You have to know the context of the code, read the documentation or manual, or just try it and see what happens. The same can apply to methods and other attributes: class MyClass: length = 99 def len(self, object): # Re-invent the wheel, badly. count = 0 for item in object: count += 1 return count And now to see the same behaviour as for ordinary variables: py> instance = MyClass() py> instance.length 99 py> instance.length() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'int' object is not callable py> print(instance.len) <bound method MyClass.len of <__main__.MyClass object at 0xb79009cc>> py> instance.len("hello world") 11 Does this help you understand what you are seeing with the data.columns example? -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor