I have a class with property decorator.
class Dispatcher:
def __init__(self, url):
self._session = None
@property
def session(self):
return self._session
@session.setter
def session(self, value):
self._session = value
But I don't need the getter, can I have property with only the setter?
It's most more a curiosity.
The simplest way IMHO is
class Dispatcher:
def __init__(self, url):
self._session = None
def _set_session(self, value):
self._session = value
session = property(fset=_set_session)
Demo:
>>> d = Dispatcher('a')
>>> d.session = 1
>>> d._session
1
>>> d.session
Traceback (most recent call last):
File "<pyshell#81>", line 1, in <module>
d.session
AttributeError: unreadable attribute
You could make your own "setterOnly" decorator:
# decorator
def setterOnly(f):
return property(None,f)
usage:
class P:
@setterOnly
def x(self,v): print("setting x to:",v)
p = P()
p.x = 3
setting x to: 3
For your class:
class Dispatcher:
def __init__(self, url):
self._session = None
@setterOnly
def session(self,value):
self._session = value
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With