I have a class in Python that initializes the attributes of an environment. I am attempting to grab the topographyRegistry attribute list of my Environment class in a separate function, which when called, should take in the parameters of 'self' and the topography to be added. When this function is called, it should simply take an argument such as addTopographyToEnvironment(self, "Mountains") and append it to the topographyRegistry of the Environment class.
When implementing what I mentioned above, I ran into an error regarding the 'self' method not being defined. Hence, whenever I call the above line, it gives me:

```
    print (Environment.addTopographyToEnvironment(self, "Mountains"))
                                                  ^^^^
NameError: name 'self' is not defined

```

This leads me to believe that I am unaware of and missing a step in my implementation, but I am unsure of what that is exactly.
Here is the relevant code:

```
class EnvironmentInfo:
    def __init__(self, perceivableFood, perceivableCreatures, regionTopography, lightVisibility):
        self.perceivableFood = perceivableFood
        self.perceivableCreatures = perceivableCreatures
        self.regionTopography = regionTopography
        self.lightVisibility = lightVisibility

class Environment:
    def __init__(self, creatureRegistry, foodRegistry, topographyRegistery, lightVisibility):
        logging.info("Creating new environment")
        self.creatureRegistry = []
        self.foodRegistry = []
        self.topographyRegistery = []
        self.lightVisibility = True

    def displayEnvironment():
        creatureRegistry = []
        foodRegistry = []
        topographyRegistery = ['Grasslands']
        lightVisibility = True
        print (f"Creatures: {creatureRegistry} Food Available: {foodRegistry} Topography: {topographyRegistery}  Contains Light: {lightVisibility}")

    def addTopographyToEnvironment(self, topographyRegistery):
        logging.info(
            f"Registering {topographyRegistery} as a region in the Environment")
        self.topographyRegistery.append(topographyRegistery)

    def getRegisteredEnvironment(self):
        return self.topographyRegistry

if __name__ == "__main__":
        print (Environment.displayEnvironment())                         #Display hardcoded attributes
        print (Environment.addTopographyToEnvironment(self, "Mountains"))#NameError
        print (Environment.getRegisteredEnvironment(self))               #NameError

```

What am I doing wrong or not understanding when using 'self'?

Edit: In regard to omitting 'self' from the print statement, it still gives me an error indicating a TypeError:

```
 print (Environment.addTopographyToEnvironment("Mountains"))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Environment.addTopographyToEnvironment() missing 1 required positional argument: 'topographyRegistery'

```