Python Source Code Analysis: Where does `self` go when monkey patch a class member function to `eval()`?

In the process of getting a shell in Python, we can hijack a member function of a class and turn it into `eval()`. At first glance, everything seems fine. But upon closer examination, when calling a member function of a class, isn't `self` passed as an argument, like `func(clazz.self, parameter)`? Then why isn't `self` being passed as the first argument to `eval()`, and why isn't there an error?