By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
464,330 Members | 1,144 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 464,330 IT Pros & Developers. It's quick & easy.

Question about properties.

P: n/a
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!

Aug 10 '07 #1
Share this Question
Share on Google+
8 Replies

P: n/a
On Aug 10, 12:21 pm, king kikapu <aboudou...@panafonet.grwrote:
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!
>>help(2)
.....
| __invert__(...)
| x.__invert__() <==~x

hth.
Duikboot
Aug 10 '07 #2

P: n/a
On Fri, 10 Aug 2007 03:21:29 -0700, king kikapu wrote:
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
Aug 10 '07 #3

P: n/a
On Aug 10, 1:33 pm, Marc 'BlackJack' Rintsch <bj_...@gmx.netwrote:
On Fri, 10 Aug 2007 03:21:29 -0700, king kikapu wrote:
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
Xmmm...ok then but what is actually doing there ?? I removed it and
things seems to work the same way...

Aug 10 '07 #4

P: n/a
Maybe is just a writers' "play" and nothing else.

Aug 10 '07 #5

P: n/a
king kikapu wrote:
On Aug 10, 1:33 pm, Marc 'BlackJack' Rintsch <bj_...@gmx.netwrote:
>On Fri, 10 Aug 2007 03:21:29 -0700, king kikapu wrote:
>>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

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 -------------

Aug 10 '07 #6

P: n/a
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.

--
[ Antti Rasinen <*ar*@iki.fi ]

Aug 10 '07 #7

P: n/a
On Aug 10, 5:31 am, dijkstra.ar...@gmail.com wrote:
On Aug 10, 12:21 pm, king kikapu <aboudou...@panafonet.grwrote:
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!
>help(2)

....
| __invert__(...)
| x.__invert__() <==~x

hth.
Duikboot
http://docs.python.org/ref/unary.html

The unary ~ (invert) operator yields the bit-wise inversion of its
plain or long integer argument. The bit-wise inversion of x is defined
as -(x+1). It only applies to integral numbers.

Aug 10 '07 #8

P: n/a
king kikapu wrote:
>On Aug 10, 1:33 pm, Marc 'BlackJack' Rintsch <bj_...@gmx.netwrote:

>>On Fri, 10 Aug 2007 03:21:29 -0700, king kikapu wrote:

>>>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


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
Aug 10 '07 #9

This discussion thread is closed

Replies have been disabled for this discussion.