Question about properties.

K

king kikapu

Hi,

i read in a book the following code snippet that is dealing with
properties:

class ProtectAndHideX(object):
def __init__(self, x):
assert isinstance(x, int), '"x" must be an integer!"'
self.__x = ~x

def get_x(self):
return ~self.__x

x = property(get_x)


Can anyone please help me understand what the symbol "~" does here ??

Thanks for any help!
 
D

dijkstra.arjen

Hi,

i read in a book the following code snippet that is dealing with
properties:

class ProtectAndHideX(object):
def __init__(self, x):
assert isinstance(x, int), '"x" must be an integer!"'
self.__x = ~x

def get_x(self):
return ~self.__x

x = property(get_x)

Can anyone please help me understand what the symbol "~" does here ??

Thanks for any help!
.....
| __invert__(...)
| x.__invert__() <==> ~x



hth.
Duikboot
 
M

Marc 'BlackJack' Rintsch

Hi,

i read in a book the following code snippet that is dealing with
properties:

class ProtectAndHideX(object):
def __init__(self, x):
assert isinstance(x, int), '"x" must be an integer!"'
self.__x = ~x

def get_x(self):
return ~self.__x

x = property(get_x)


Can anyone please help me understand what the symbol "~" does here ??

This has nothing to do with properties. For integer objects ``~`` is the
bitwise negation or invertion operator.

Ciao,
Marc 'BlackJack' Rintsch
 
K

king kikapu

This has nothing to do with properties. For integer objects ``~`` is the
bitwise negation or invertion operator.

Ciao,
Marc 'BlackJack' Rintsch

Xmmm...ok then but what is actually doing there ?? I removed it and
things seems to work the same way...
 
A

Antti Rasinen

Hi,

i read in a book the following code snippet that is dealing with
properties:

class ProtectAndHideX(object):
def __init__(self, x):
assert isinstance(x, int), '"x" must be an integer!"'
self.__x = ~x

def get_x(self):
return ~self.__x

x = property(get_x)


Can anyone please help me understand what the symbol "~" does here ??

My guess is that the example tries to show that it does not matter how the
property computes the value. You can -- if you want -- to store integers
as their bit-inverted versions (the ~ operator) and then do the conversion
when getting the property value.

Assume you initialized the object with ProtectAndHideX(4). Outside the
object you don't have access to the original __x. And! Even if you changed
the name of the variable name to y, you'd have hidden_x.y == -5 instead of
4.

The example is very contrived. There might be some security related cases
where you need to hide what you store in memory, though. (Hopefully they
do more than just invert the bits! :)

NB: I don't know what the original author was thinking here -- my
telepathy isn't what it used to be.
 
S

Steve Holden

king said:
Xmmm...ok then but what is actually doing there ?? I removed it and
things seems to work the same way...
Observe the name of the class. I believe the integer value is inverted
merely as a demonstration that the value can be "obscured" somehow - in
a more complex example the author might have insisted in string values,
the encrypted them. It's not essential to the example, it merely shows
that the value retrieved from the property can be computed from
underlying attributes.

regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------
 
G

Gerardo Herzig

king said:
Xmmm...ok then but what is actually doing there ?? I removed it and
things seems to work the same way...
I guess it is the `Hide' part of the Protectand*Hide* class.
Gerardo
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,073
Latest member
DarinCeden

Latest Threads

Top