def __init__(self, session=None):
        self._session = session or Session.login()
        self._message_sender = helpers.Messager(self._session)
        assert self._session.log_in_name is not None, (
            "The session provided to the user constructor must be logged in."
        )
        #: A :class:`~okcupyd.profile.Profile` object belonging to the logged
        #: in user.
        self.profile = Profile(self._session, self._session.log_in_name)

        #: A :class:`~okcupyd.util.fetchable.Fetchable` of
        #: :class:`~okcupyd.messaging.MessageThread` objects corresponding to
        #: messages that are currently in the user's inbox.
        self.inbox = util.Fetchable(ThreadFetcher(self._session, 1))
        #: A :class:`~okcupyd.util.fetchable.Fetchable` of
        #: :class:`~okcupyd.messaging.MessageThread` objects corresponding to
        #: messages that are currently in the user's outbox.
        self.outbox = util.Fetchable(ThreadFetcher(self._session, 2))
        #: A :class:`~okcupyd.util.fetchable.Fetchable` of
        #: :class:`~okcupyd.messaging.MessageThread` objects corresponding to
        #: messages that are currently in the user's drafts folder.
        self.drafts = util.Fetchable(ThreadFetcher(self._session, 4))

        #: A :class:`~okcupyd.util.fetchable.Fetchable` of
        #: :class:`~okcupyd.profile.Profile` objects of okcupid.com users that
        #: have visited the user's profile.
        self.visitors = util.Fetchable.fetch_marshall(
            util.GETFetcher(self._session, 'visitors',
                            lambda start_at: {'low': start_at}),
            util.PaginationProcessor(
                lambda user: Profile(self._session, user), self._visitors_xpb,
                self._visitors_current_page_xpb, self._visitors_total_page_xpb,
            )
        )

        #: A :class:`~okcupyd.question.Questions` object that is instantiated
        #: with the owning :class:`~.User` instance's session.
        self.questions = Questions(self._session)

        #: An :class:`~okcupyd.attractiveness_finder._AttractivenessFinder`
        #: object that is instantiated with the owning :class:`~.User`
        #: instance's session.
        self.attractiveness_finder = AttractivenessFinder(self._session)

        #: A :class:`~okcupyd.photo.PhotoUploader` that is instantiated with
        #: the owning :class:`~.User` instance's session.
        self.photo = PhotoUploader(self._session)

        #: A :class:`~okcupyd.location.LocationQueryCache` instance
        self.location_cache = LocationQueryCache(self._session)
:param session: The session which will be used for interacting
dataset/ETHPy150Open IvanMalison/okcupyd/okcupyd/user.py/User.__init__