they take no arguments as gettersand return no value as settersclass car(object)def __init__(self)self _speed @property def speed(self)print("speed is"self _speedreturn self _speed @speed setter def speed(selfvalue)print("setting to"valueself _speed value >car car(car speed setting to car speed speed is odd syntax to pass one argument in an accessorwe co-opt the python syntax of assignment to pass an argument instead that in itself is fairly easy for much python syntax thoughfor exampleclass talkativeint(int)def __lshift__(selfother)print("shift"self"by"otherreturn int __lshift__(selfothert talkativeint( < shift by every operator in python is basically method call "under the hood but while occasionally producing more readable "domain specific language(dsl)defining special callable meanings for operators adds no improvement to the underlying capabilities of function calls static methods of instances one use of classes and their methods that is more closely aligned with functional style of programming is to use them simply as namespaces to hold variety of related functions callables