def __call__(self, name):
priv = "<STR_LIT:_>" + name    <EOL>def getter(this):<EOL><INDENT>if ((not hasattr(this, priv) or getattr(this, priv) is None) and<EOL>hasattr(this, "<STR_LIT>") and isinstance(this._setters, (list, tuple))):<EOL><INDENT>for prefix in this._setters:<EOL><INDENT>cmd = "<STR_LIT>".format(prefix, priv)<EOL>if hasattr(this, cmd):<EOL><INDENT>getattr(this, cmd)()    <EOL>if hasattr(this, priv):<EOL><INDENT>break<EOL><DEDENT><DEDENT><DEDENT><DEDENT>if isinstance(self.pre_get, str):<EOL><INDENT>getattr(this, self.pre_get)()<EOL><DEDENT>elif callable(self.pre_get):<EOL><INDENT>self.pre_get(this)<EOL><DEDENT>return getattr(this, priv, None)    <EOL><DEDENT>def setter(this, value):<EOL><INDENT>if self.autoconv and not isinstance(value, self.types) and value is not None:<EOL><INDENT>for t in self.types:<EOL><INDENT>try:<EOL><INDENT>value = t(value)<EOL>break<EOL><DEDENT>except Exception as e:    <EOL><INDENT>if self.verbose:<EOL><INDENT>warnings.warn("<STR_LIT>".format(name, type(value), t, str(e)))<EOL><DEDENT><DEDENT><DEDENT>else:          <EOL><INDENT>raise TypeError("<STR_LIT>".format(type(value), self.types))<EOL><DEDENT><DEDENT>elif ((value is None and self.allow_none == False) or<EOL>(not isinstance(value, self.types) and value is not None)):<EOL><INDENT>raise TypeError("<STR_LIT>".format(name, type(value), self.types))<EOL><DEDENT>if isinstance(self.pre_set, str):<EOL><INDENT>getattr(this, self.pre_set)()<EOL><DEDENT>elif callable(self.pre_set):<EOL><INDENT>self.pre_set(this)<EOL><DEDENT>if isinstance(this, (pd.DataFrame, pd.SparseDataFrame)):<EOL><INDENT>this[priv] = value<EOL><DEDENT>else:<EOL><INDENT>setattr(this, priv, value)    <EOL><DEDENT>if isinstance(self.post_set, str):<EOL><INDENT>getattr(this, self.post_set)()<EOL><DEDENT>elif callable(self.post_set):<EOL><INDENT>self.post_set(this)<EOL><DEDENT><DEDENT>def deleter(this):<EOL><INDENT>if isinstance(self.pre_del, str):<EOL><INDENT>getattr(this, self.pre_del)()<EOL><DEDENT>elif callable(self.pre_del):<EOL><INDENT>self.pre_del(this)<EOL><DEDENT>delattr(this, priv)    <EOL>if isinstance(self.post_del, str):<EOL><INDENT>getattr(this, self.post_del)()<EOL><DEDENT>elif callable(self.post_del):<EOL><INDENT>self.post_del(this)<EOL><DEDENT><DEDENT>return property(getter, setter, deleter, doc=self.doc)<EOL>
Construct the property.

Args:
    name (str): Attribute (property) name

Returns:
    prop (property): Custom property definition with support for typing