two objects and methods stringspart iii object orientation python is an object-oriented language every piece of data and even functions and types are objects the term objectoriented is used to distinguish python from earlier languagesclassified as procedural languageswhere types of data and the operations on them were not connected in the language the functions we have used so far follow the older procedural programming syntax in the newer paradigm of object-oriented programmingall data are in objectsand core group of operations that can be done on some particular type of object are tightly bound to the object and called the object' methods for examplestrings are objectsand strings "know howto produce an uppercase version of themselves try in the shells 'hello! upper(here upper is method associated with strings this means upper is function that is bound to the string before the dot this function is bound both logicallyand as we see in the new notationalso syntactically one way to think about it is that each type of data knows operations (methodsthat can be applied to it the expression upper(calls the method upper that is bound to the string and returns new uppercase string result based on strings are immutableso no string method can change the original stringit can only return new string confirm this by entering each line individually in the shell to see the original is unchangeds upper( we are using the new object syntaxobject methodmeaning that the method associated with the object' type is applied to the object this is just special syntax for function call with an object another string method is loweranalogous to upperbut producing lowercase result test yourself how would you write the expression to produce lowercase version of the string sanswer try it in the shell lower(