I'm not sure I understand how this class works because `self.p` needs to be assigned to be able to access the object propertices, but `cinit` doesn't set it.