Consider:

```
class Parent():
    def __init__(self, last_name, eye_color):
        self.last_name = last_name
        self.eye_color = eye_color

    def show_info(self):
        print("Last Name - "+self.last_name)
        print("Eye Color - "+self.eye_color)

billy_cyrus = Parent("Cyrus", "blue")

```

The above is from the [Udacity](https://en.wikipedia.org/wiki/Udacity) Python course. I discovered I'm able to call `show_info` for instance `billy_cyrus` using either of the following:

```
billy_cyrus.show_info()
Parent.show_info(billy_cyrus)

```

I'm curious as to why. Is there a difference between the two methods? If so when would one be used vs. the other? I'm using Python 3.6 if that matters.