class-oriented rather than object-oriented?

Bruno Desthuilliers bruno.42.desthuilliers at websiteburo.invalid
Mon May 26 12:42:32 EDT 2008


notnorwegian at yahoo.se a écrit :
> i have some confusion over this.
> 
> sure a class is basically a classification, like for example an animal
> or flower. and an object/instance of that class is then for example a
> cat.
> 
> an object is an instance of a class.

Depends on the language.

> that i know, i also know how to
> program with classes etc.
> 
> i am just confused about the term object-oriented.
> 
> wouldnt class-oriented be more fitting? at least for java since what
> you do is divide everything into classes.

InMyArms(tm) !-)

> in python i dont or at leats not as much.

Fact is that Python is more concerned about objects and less about 
classes. While you do have the concept of a class in Python, it's in 
some points closer to javascript's prototypes. Amongst other things, the 
object/class relationship is not necessarily static - you can 
dynamically rebind an object to another class (whether it's a good idea 
is another question), dynamicallt add/remove/replace attributes 
(including methods) on a per-instance or per-class basis, etc.

> 
> does object-oriented refer to that everything(strings, ints etc) are
> all objects?

The only commonly accepted definitions I know wrt/ OO are :

1/ an OO program is composed of objects interacting thru messages
2/ an object is defined by an identity, a state and a behaviour

So to answer your question:

Not necessarily, but having non-object "things" in an OO program somehow 
contradicts definition #1 IMHO.

BTW, you'll notice that there's nowhere mention of "classes" here...

> so there is a class string somewhere in the
> implementation rather than a primitive or somehing?

... nor of "primitive types" !-)

> are python functions objects?

Yes. As well as classes, modules, and even the function's code. From 
this POV, Python is 100% object. wrt/ to the "message passing" part, 
it's probably a bit more debatable, specially when compared to Smalltalk 
where messages are the only control structure.

> can a functional language be object-oriented or an objectoriented
> language be functional?

Well... Depends on the definitions of "object-oriented" and 
"functional". There are indeed some languages that try to support both 
approach, coming either from the OO side (Python, Ruby, Javascript...) 
or from the functional side (OCaml, Common Lisp, Scheme, ...).

Now none of these languages are "pure" functional languages. The point 
is that OOP and FP are two different and more or less incompatible 
approach toward state management. OOP try to encapsulate state into 
objects, while FP try to simply get rid of any shared state.

> one definition of OO is a language that passes messages between
> objects. but not necessarily that is has to pass message sbetween
> classes?

If your classes are objects, then what's the difference ?-) And if they 
are not, how are you going to pass messages between them ?

But the fact is that the concept of "class" is by no mean central, nor 
even necessary, to OO. You might want to have a look at languages like 
Self, Io and Javascript, which are prototype-based instead of class-based.



More information about the Python-list mailing list