| Deutsch English Français Italiano |
|
<prototype-20240120111210@ram.dialup.fu-berlin.de> View for Bookmarking (what is this?) Look up another Usenet article |
Path: eternal-september.org!news.eternal-september.org!feeder3.eternal-september.org!fu-berlin.de!uni-berlin.de!not-for-mail
From: ram@zedat.fu-berlin.de (Stefan Ram)
Newsgroups: comp.lang.lisp,comp.lang.python
Subject: Re: Is Lexical Binding The Norm Yet?
Date: 20 Jan 2024 10:13:40 GMT
Organization: Stefan Ram
Lines: 46
Expires: 1 Dec 2024 11:59:58 GMT
Message-ID: <prototype-20240120111210@ram.dialup.fu-berlin.de>
References: <uo1i8c$jbru$2@dont-email.me> <86r0ijsdyj.fsf@williamsburg.bawden.org> <871qajgr9k.fsf@nightsong.com> <uo4id7$14ifr$1@dont-email.me> <jwvedeg510z.fsf-monnier+comp.lang.lisp@gnu.org> <uo9cbb$264u2$1@dont-email.me> <20240117122629.806@kylheku.com> <uo9o4k$281t4$1@dont-email.me> <qitjqi521brjnpvebd2b1bidrhevocbt62@4ax.com> <uod249$30h1g$3@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: news.uni-berlin.de bZ5fgMPL6iinXMX0xNiBoAvuWyrFWVMkhz3pVq0wwZIMXK
Cancel-Lock: sha1:5vUMwzwWH0NOgpJYEXIFaStj3BE= sha256:UMkhXDtlqemCgAsfWYy4BF5EZzKaq88+FX4GMffnyQE=
X-Copyright: (C) Copyright 2024 Stefan Ram. All rights reserved.
Distribution through any means other than regular usenet
channels is forbidden. It is forbidden to publish this
article in the Web, to change URIs of this article into links,
and to transfer the body without this notice, but quotations
of parts in other Usenet posts are allowed.
X-No-Archive: Yes
Archive: no
X-No-Archive-Readme: "X-No-Archive" is set, because this prevents some
services to mirror the article in the web. But the article may
be kept on a Usenet archive server with only NNTP access.
X-No-Html: yes
Content-Language: en-US
Accept-Language: de-DE-1901, en-US, it, fr-FR
Newsgroups: comp.lang.lisp,comp.lang.python
Lawrence D'Oliveiro <ldo@nz.invalid> writes:
>On Thu, 18 Jan 2024 23:39:26 -0500, George Neuner wrote:
>>Programming with closures is more like using "prototype OO". Prototype
>>systems don't have classes, but rather ANY object can be modified to
>>change its set of instance data and/or methods, and can be cloned to
>>create new objects of that same "type".
>That’s true of Python, too.
Yes that's true. Forgive me guys if that's too "off topic"
in comp.lang.lisp, but it might not be obvious how to create
an object in Python and then attach fields or methods to it.
So here I humbly submit a small example program to show this.
main.py
from types import *
# create a new object
def counter_object(): pass
# attach a numeric field to the object
counter_object.counter_value = 0
# define a named function
def increment_value( self ): self.counter_value += 1
# attach the named function to the object as a method
counter_object.increment_value = \
MethodType( increment_value, counter_object )
# call the method
counter_object.increment_value()
# attach an unnamed function to the object
counter_object.get_value = \
MethodType( lambda self: self.counter_value, counter_object )
# call that method
print( counter_object.get_value() )
This program will then print "1" and a line terminator.
Newsgroups: comp.lang.lisp,comp.lang.python