The closest Is that this (Be aware that the casts of wrapper aren't essential should you make self posonly), but it surely breaks typing for self.funct. If you don't will need that attribute or are OK with it currently being perhaps incompatible (the only way to get that will be to parametrize with-args form explicitly), That ought to operate good.