All game objects have a dictionary attached to them. This dictionary holds all the game properties you assign to the object using the Logic Editor UI in addition to any thing else you might add to it in Python scripts.
Dictionaries are Python objects used to store data and provide fast access to it. An entry in a dictionary is called an item and each item consists of a key-value pair. To put an value in a dictionary, you have to give it a key that you’ll use for retrieving the value from the dictionary later. The key can be any Python object that is hashable (don’t worry if you don’t know what that means). In the case of game properties, the key is the property name string and the value is whatever value you assigned.
Most of the time people access dictionary values using brackets. However, dictionaries also have a get() method that essentially does the same thing but does not raise an error if the key you provide doesn’t exists and allows you to specify a default return value. Here’s an example:
cont = bge.logic.getCurrentController()
obj = cont.owner
# lets get the property called 'myProp' from the object
# using brackets
propValue = obj['myProp']
# using the get method
propValue = obj.get('myProp')
# if you try to use a key that does not exist
fakeProp = obj['keyThatDoesNotExist']
# this will raise a KeyError and will cause your script to fail if not handled properly
# or you can handle non-existing keys with get()
fakeProp = obj.get('keyThatDoesNotExist', 0)
# in this case, fakeProp = 0 since the given key does not exist and I specified 0 as the default value
Note that all of this has nothing to do with other “get” methods like getActionFrame(). Those do exactly what they say in the docs.