I am going over a Python tutorial the one where the following example is demonstrated:
>>> 'str'.strip() + 'ing' # <- This is ok
In this example (as i understand it) str is a string, on which function strip() is called.
I would reasonably expect to find that function doing >>> dir("abc"). Indeed function is listed as 'strip'
Question 1: Why are some functions listed as __name__ and others as name?
Question 2: I would like now to find more information about this function. When running help("abc") (expecting to get a man page on all functions that can be ran on string), strip is not listed. Why? Where can i find out more about particular function?
Question 3: Using PyCharm i would expect the following autocompletion to work and yet, i see nothing. Why is that?

Functions surrounded by double underscores are special functions that can be overridden to implement special behaviors. For example, the
__getitem__function, when implemented in a class, allows indexed access to items in that class. (In other words,a[5]is equivalent in most contexts toa.__getitem__(5)). The underscores just signal that they’re special, and require some special handling. (For example, don’t invent your own.)When you pass a string to
help, it treats the string as a query. For example,help('class')brings up a bunch of information about classes. If you want thehelptext for string objects, dohelp(str)orhelp('str').I don’t use PyCharm, so I can’t help there.