Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #84665 > unrolled thread
| Started by | Mario Figueiredo <marfig@gmail.com> |
|---|---|
| First post | 2015-01-27 21:12 +0100 |
| Last post | 2015-01-27 18:11 -0800 |
| Articles | 3 on this page of 63 — 17 participants |
Back to article view | Back to comp.lang.python
An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-27 21:12 +0100
Re: An object is an instance (or not)? Ethan Furman <ethan@stoneleaf.us> - 2015-01-27 12:36 -0800
Re: An object is an instance (or not)? André Roberge <andre.roberge@gmail.com> - 2015-01-27 12:50 -0800
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-27 22:06 +0100
Re: An object is an instance (or not)? André Roberge <andre.roberge@gmail.com> - 2015-01-27 13:38 -0800
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-27 22:43 +0100
Re: An object is an instance (or not)? André Roberge <andre.roberge@gmail.com> - 2015-01-27 13:49 -0800
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-27 22:58 +0100
Re: An object is an instance (or not)? Ben Finney <ben+python@benfinney.id.au> - 2015-01-28 09:32 +1100
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-28 18:55 +1100
Re: An object is an instance (or not)? Ben Finney <ben+python@benfinney.id.au> - 2015-01-28 22:20 +1100
Re: An object is an instance (or not)? Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-01-27 23:12 +0000
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-28 01:52 +0100
Re: An object is an instance (or not)? Marko Rauhamaa <marko@pacujo.net> - 2015-01-28 07:25 +0200
Re: An object is an instance (or not)? Rustom Mody <rustompmody@gmail.com> - 2015-01-27 21:53 -0800
Re: An object is an instance (or not)? Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-01-28 05:57 +0000
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-28 11:48 +0100
Re: An object is an instance (or not)? random832@fastmail.us - 2015-01-28 00:37 -0500
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-28 19:45 +1100
Re: An object is an instance (or not)? Devin Jeanpierre <jeanpierreda@gmail.com> - 2015-01-27 21:43 -0800
Re: An object is an instance (or not)? random832@fastmail.us - 2015-01-28 01:01 -0500
Re: An object is an instance (or not)? Rustom Mody <rustompmody@gmail.com> - 2015-01-27 22:22 -0800
Re: An object is an instance (or not)? Ben Finney <ben+python@benfinney.id.au> - 2015-01-28 18:03 +1100
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-28 19:48 +1100
Re: An object is an instance (or not)? Ben Finney <ben+python@benfinney.id.au> - 2015-01-28 17:59 +1100
Re: An object is an instance (or not)? Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2015-01-28 20:21 +1300
Re: An object is an instance (or not)? Ben Finney <ben+python@benfinney.id.au> - 2015-01-28 18:48 +1100
Re: An object is an instance (or not)? random832@fastmail.us - 2015-01-28 12:08 -0500
Re: An object is an instance (or not)? Rustom Mody <rustompmody@gmail.com> - 2015-01-28 18:29 -0800
Re: An object is an instance (or not)? Ned Batchelder <ned@nedbatchelder.com> - 2015-01-27 18:22 -0500
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-28 01:17 +0100
Re: An object is an instance (or not)? Chris Angelico <rosuav@gmail.com> - 2015-01-28 11:30 +1100
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-28 01:35 +0100
Re: An object is an instance (or not)? alex23 <wuwei23@gmail.com> - 2015-01-28 14:44 +1000
Re: An object is an instance (or not)? Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2015-01-28 23:33 +1300
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-28 22:52 +1100
Re: An object is an instance (or not)? Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2015-01-29 19:22 +1300
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-29 18:16 +1100
Re: An object is an instance (or not)? Ian Kelly <ian.g.kelly@gmail.com> - 2015-01-29 08:48 -0700
Re: An object is an instance (or not)? Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2015-01-30 22:07 +1300
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-31 10:45 +1100
Re: An object is an instance (or not)? Ned Batchelder <ned@nedbatchelder.com> - 2015-01-27 21:21 -0500
Re: An object is an instance (or not)? Rustom Mody <rustompmody@gmail.com> - 2015-01-27 18:52 -0800
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-28 20:16 +1100
Re: An object is an instance (or not)? Chris Angelico <rosuav@gmail.com> - 2015-01-28 21:01 +1100
Re: An object is an instance (or not)? Rick Johnson <rantingrickjohnson@gmail.com> - 2015-01-29 14:22 -0800
Re: An object is an instance (or not)? Ian Kelly <ian.g.kelly@gmail.com> - 2015-01-27 19:15 -0700
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-28 20:28 +1100
Re: An object is an instance (or not)? Gregory Ewing <greg.ewing@canterbury.ac.nz> - 2015-01-28 23:33 +1300
Re: An object is an instance (or not)? Grant Edwards <invalid@invalid.invalid> - 2015-01-28 00:23 +0000
Re: An object is an instance (or not)? Ben Finney <ben+python@benfinney.id.au> - 2015-01-28 10:39 +1100
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-28 01:24 +0100
Re: An object is an instance (or not)? Ben Finney <ben+python@benfinney.id.au> - 2015-01-28 12:00 +1100
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-28 02:14 +0100
Re: An object is an instance (or not)? alex23 <wuwei23@gmail.com> - 2015-01-28 14:47 +1000
Re: An object is an instance (or not)? Rustom Mody <rustompmody@gmail.com> - 2015-01-27 21:23 -0800
Re: An object is an instance (or not)? random832@fastmail.us - 2015-01-28 00:44 -0500
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-28 20:21 +1100
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-28 20:17 +1100
Re: An object is an instance (or not)? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-01-28 20:09 +1100
Re: An object is an instance (or not)? Chris Angelico <rosuav@gmail.com> - 2015-01-28 10:42 +1100
Re: An object is an instance (or not)? Mario Figueiredo <marfig@gmail.com> - 2015-01-28 01:31 +0100
Re: An object is an instance (or not)? Rustom Mody <rustompmody@gmail.com> - 2015-01-27 18:11 -0800
Page 4 of 4 — ← Prev page 1 2 3 [4]
| From | Chris Angelico <rosuav@gmail.com> |
|---|---|
| Date | 2015-01-28 10:42 +1100 |
| Message-ID | <mailman.18193.1422402146.18130.python-list@python.org> |
| In reply to | #84665 |
On Wed, Jan 28, 2015 at 10:22 AM, Ned Batchelder <ned@nedbatchelder.com> wrote: > I don't know what the difference is between "object" and "instance". An > object is an instance of a class. The two words are interchangeable as far > as I know. My understanding is that "instance" is meaningless unless followed by "of". That is to say, 123.45 is an object, and it is an instance *of* the 'float' class. Everything in Python is an instance *of something*, so in a sense, you can say that everything is an instance, but that's like saying that everything has a color. Sure it does, but you need to be more specific. ChrisA
[toc] | [prev] | [next] | [standalone]
| From | Mario Figueiredo <marfig@gmail.com> |
|---|---|
| Date | 2015-01-28 01:31 +0100 |
| Message-ID | <MPG.2f324c19ac737fdc9896ab@nntp.aioe.org> |
| In reply to | #84686 |
In article <mailman.18193.1422402146.18130.python-list@python.org>, rosuav@gmail.com says... > > On Wed, Jan 28, 2015 at 10:22 AM, Ned Batchelder <ned@nedbatchelder.com> wrote: > > I don't know what the difference is between "object" and "instance". An > > object is an instance of a class. The two words are interchangeable as far > > as I know. > > My understanding is that "instance" is meaningless unless followed by > "of". That is to say, 123.45 is an object, and it is an instance *of* > the 'float' class. Everything in Python is an instance *of something*, > so in a sense, you can say that everything is an instance, but that's > like saying that everything has a color. Sure it does, but you need to > be more specific. > In programming languages in which class definitions aren't first-class objects, the terms are in fact used interchangeably. And rightly so, because an object is in fact always an instance of some class. Python and a few other languages implement class definitions as first- class objects. In this case, the distinction between an object and an instance is actually an implementation detail and comes with its own semantics. This is why I object to the notion that in Python object = instance.
[toc] | [prev] | [next] | [standalone]
| From | Rustom Mody <rustompmody@gmail.com> |
|---|---|
| Date | 2015-01-27 18:11 -0800 |
| Message-ID | <9a470405-d22d-448b-83ff-93fccd92bea6@googlegroups.com> |
| In reply to | #84665 |
On Wednesday, January 28, 2015 at 1:42:47 AM UTC+5:30, Mario Figueiredo wrote: > This is a follow up from a previous discussion in which it is argued > that the following code produces the correct error message terminology, > considering that in Python an object is also an instance. > > >>> class Sub: > >>> pass > > >>> foo = Sub() > >>> foo.__bases__ > [...] > AttributeError: 'Sub' object has no attribute '__bases__' > > I'm making this into a new thread, because the particular discussion of > whether an object is an instance in Python seems more interesting than > discussing whether that error message should be changed or not. > > Here's another example where the terminology keeps indicating that in > Python an object is an instance: > > >>> class Sub: > pass > > >>> x = Sub() > >>> x > <__main__.Sub object at 0x02631690> > > The problem is that I personally cannot agree with this terminology and > I would like to hear arguments that could convince me to adopt the > Python way. But before your replies, here's my argumentation: > > An instance IS an object. On that we can agree. After all, everything in > Python is an object. Even classes are. We can even pass them as function > arguments: > > >>> class Sub: > pass > > >>> def show(aClass): > print(type(aClass)) > > >>> show(Sub) > <class 'type'> > > The problem is that an object isn't always an instance. The word > instance in OOP has a very formal meaning. In programming languages in > which the classes aren't fully realized objects, it is ok to speak of > 'instance' and 'object' interchangeably. But even then, sometimes the > term 'object instance' is preferred, as a way to separate these > 'instances' from other variable instances that may not be created from > class definitions (e.g. C++ built-in types). > > The fact that in Python classes are objects, should not just eliminate > this distinction. The OOP terminology should exist beyond the language > implementing it. It facilitates discourse and helps transmiting concepts > when describing your ideas to another programmer. And because in python, > classes are of the type 'type' and they exist as fully realized objects, > is no excuse to make a distinction between them and their own fully > realized instances. The language implementation details should not exist > as a way for us to freely reformulate long standing terms. > > Because, from my own study of Python, I've came to realize that the > distinction between objects and instances of objects actually exists. In > Python, class objects cannot participate in OOP, only their instances. > This is why I say that even in Python, where a class is an object, an > object is not always an instance. The language itself forces that > distinction. > > ... > > I don't think that any of this is reason enough to rewrite error > messages in Python. Seems unnecessary. What I'm arguing thought is that > error messages in Python cannot become the source of new terminology. > The language itself implements a very clear distinction between class > objects and their instances. And it is thus wrong of us to say that > Object = Instance. At least from an OOP perspective. The issue (as I see it) is primarily with English - in particular the word 'is', technically called copula: https://en.wikipedia.org/wiki/Copula_%28linguistics%29 Is is(!) used in 3 ways that can get mutually incompatible: Predication: The sky is blue Identity: Two plus three is five [Notice how you've used '=' above] Belonging: (OOP isa relation): Cat is a mammal Some people have found this (mis|over)use of 'is' so problematic that they have suggested to doctor English to not use is as far as possible: https://en.wikipedia.org/wiki/E-Prime
[toc] | [prev] | [standalone]
Page 4 of 4 — ← Prev page 1 2 3 [4]
Back to top | Article view | comp.lang.python
csiph-web