In python , we have the class type , and we have the class object .
The class type is used to create a new type/class .
The class type is also used to get the type/class used to create an instance of a type/class .
The class type is also used to get the type/class that was used to create a type/class .
>>> type(object) is type # type returns the type that was used # to create a type or an object . # the object class/type , was # created by using the type class # output True >>> type(1) is int # the int class was used to create 1 # output True >>>type(object()) is object # the object() instance was created # by using the object class # output True >>> Aclass = type('Aclass',(object,),{'attribute':1}) # create a new class using the type class # this new class extends the object class # and has one property called attribute # which has a value of 1 >>> type(Aclass) is type # Aclass was created by using the # class type . Every class in python # is created using the type class # and extends the object class # output True >>> type(Aclass()) is Aclass # Aclass() instance was created by using # the Aclass class # output True
The class type is a subclass of the class object .
>>> issubclass(type,object) # The issubclass(typeA/classA,typeB/classB) # function will return true if typeA is a # subclass of typeB , or if they are the # same class or type. # the class type is a subclass of the class # object # issubclass(type,object) output True >>> issubclass(object,object) # the class object is the class object # issubclass(object,object) output : True
Everything is an object in python means :
- Every type/class that is created in python is a subclass of the class object . This means that every new type that is created in python can implement the methods which are defined in the object class , and can implement its own methods. An instance of this type/class , will have the methods that are implemented .
- Every type/class that is created , was created by using the object class .
- Every instance that is created from a new type/class , was also created by using the object class .
>>> issubclass(str , object) # everythings is an object , means that # every class/type that is created extends # the object class # issubclass(str , object) True >>> issubclass(type,object) # everything is an object , means also # that the object class was used to # create every class # issubclass(type,object) output True >>> isinstance(type,object) # everything is an object ,also means # that the object class/type was used to # create every instance of a class/type # isinstance(type,object) output True >>> isinstance(1,int) # 1 is an instance of the int class # the int class was used to create 1 # isinstance(1,int) output True >>> isinstance(1,object) # 1 is an instance of the object class # the object class was used to create 1 # output isinstance(1,object) True >>> isinstance(1,type) # 1 is not an instance of the type class # the type class was not used to create 1 # output isinstance(1,type) False >>> isinstance(int,object) # the object class was used to create # the int class # isinstance(int,object) True >>> isinstance(int,type) # the type class is used to create # every type/class , as such it was used # to create the int type/class # isinstance(int,type) True >>> isinstance(object,type) # the type class was used to create # the object class True
An object in python can also be viewed as being : abstraction of data . So we abstract the methods and properties that data can have . Programming code is itself data , meaning we can abstract its properties and operations . For example in a programming code we have the characters that make the code , we have the syntax , and the operations –functions , operators — that we can perform using this code .
So in python we can think of data or objects which are the abstraction of data as
object : {type , [attributes] , [methods]}
Type for example the programming code , will specify the attributes and methods that its object will have.