Almost everwhere the descriptor protocol is mentioned, it specifies
__get__(obj, typ=None). Why is a default value needed for the second
argument? In which case does Python call a descriptor without a second
argument?
Thanks,
Shalabh 2 1730
Shalabh Chaturvedi <sh*****@cafepy .com> writes: Almost everwhere the descriptor protocol is mentioned, it specifies __get__(obj, typ=None).
Really? I thought it was "__get__(ob j, cls=None)" <wink>.
Why is a default value needed for the second argument? In which case does Python call a descriptor without a second argument?
It doesn't *look* like it does, ever.
/However/ the wrapper for tp_descr_get (typeobject.c:w rap_descr_get)
accepts 1 or 2 arguments translating an absent or None second argument
to NULL, so if you want to behave like C-implemented descriptors,
you'd better accept 1 or 2 arguments. IOW, it's just part of the
"descriptor protocol".
As to *why* it's like this... erm, not sure about that.
Cheers,
mwh
--
Our Constitution never promised us a good or efficient government,
just a representative one. And that's what we got.
-- http://www.advogato.org/person/mrorg...html?start=109
Michael Hudson wrote: Shalabh Chaturvedi <sh*****@cafepy .com> writes:
.... Why is a default value needed for the second argument? In which case does Python call a descriptor without a second argument?
It doesn't *look* like it does, ever.
/However/ the wrapper for tp_descr_get (typeobject.c:w rap_descr_get) accepts 1 or 2 arguments translating an absent or None second argument to NULL, so if you want to behave like C-implemented descriptors, you'd better accept 1 or 2 arguments. IOW, it's just part of the "descriptor protocol".
As to *why* it's like this... erm, not sure about that.
Possibly so that the interface is easier to use directly:
for prop in obj.getProperti es():
try:
prop.__get__( obj )
except Exception:
argh()
Most of the time the class argument is unused (for simple property-like
code, anyway), so why not let people omit it when calling directly.
Seems like a good design choice to me.
Enjoy,
Mike
_______________ _______________ _________
Mike C. Fletcher
Designer, VR Plumber, Coder http://members.rogers.com/mcfletch/ This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Denis S. Otkidach |
last post by:
I've noticed that the order of attribute lookup is inconsistent
when descriptor is used. property instance takes precedence of
instance attributes:
>>> class A(object):
.... def _get_attr(self):
.... return self._attr
.... attr = property(_get_attr)
....
>>> a=A()
|
by: David S. |
last post by:
I am looking for a way to implement the same simple validation on many
instance attributes and I thought descriptors
(http://users.rcn.com/python/download/Descriptor.htm) looked like the
right tool.
But I am confused by their behavior on instance of my class.
I can only get the approximate behavior by using class variables.
I am looking for something like:
|
by: bruno at modulix |
last post by:
Hi
I'm currently playing with some (possibly weird...) code, and I'd have a
use for per-instance descriptors, ie (dummy code):
class DummyDescriptor(object):
def __get__(self, obj, objtype=None):
if obj is None:
return self
return getattr(obj, 'bar', 'no bar')
|
by: redefined.horizons |
last post by:
I've been reading about Python Classes, and I'm a little confused about
how Python stores the state of an object. I was hoping for some help.
I realize that you can't create an empty place holder for a member
variable of a Python object. It has to be given a value when defined,
or set within a method.
But what is the difference between an Attribute of a Class, a
Descriptor in a Class, and a Property in a Class?
|
by: Simon Bunker |
last post by:
Hi I have code similar to this:
class Input(object):
def __init__(self, val):
self.value = val
def __get__(self, obj, objtype):
return self.value
| |
by: Erwan Adam |
last post by:
Hi all,
I have a problem with the use of descriptors
and super. The file is :
# ---------------
class Desc(object):
def __init__(self, class_name):
self.class_name = class_name
|
by: 7stud |
last post by:
Hi,
Can someone show me how to manually implement staticmethod()? Here is
my latest attempt:
----------------
def smethod(func):
def newFunc():
pass
|
by: Bob B. |
last post by:
I've been playing with descriptors lately. I'm having one problem I
can't seem to find the answer to. I want to assign a descriptor to a
list of attributes. I know I should be able to add these somewhere in
the class's __dict__, but I can't figure out where. Here's some code:
class MyDesc(object):
def __init__(self, name=None, initVal=None):
self.name = name
self.value = initVal
|
by: mrkafk |
last post by:
Hello everyone,
I'm trying to do seemingly trivial thing with descriptors: have
another attribute updated on dot access in object defined using
descriptors.
For example, let's take a simple example where you set an attribute s
to a string and have another attribute l set automatically to its
length.
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it.
First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
| |
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| | |