oTree Forum >

Calling instances of player.participant on oTree Lite - otreedoc question

#1 by AndreL (edited )

In the official documentation, there is this suggested code snippet for oTree Lite
(https://otree.readthedocs.io/en/latest/timeouts.html?highlight=get_timeout_seconds#get-timeout-seconds)
===========================================
class Start(Page):

    @staticmethod
    def before_next_page(player, timeout_happened):
        participant = player.participant
        import time

        # remember to add 'expiry' to PARTICIPANT_FIELDS.
        participant.expiry = time.time() + 5*60
============================================

Is there any particular reason that one could not write simply as below? Is there any obscure advantage from defining the participant instance explicitly?
===========================================
class Start(Page):

    @staticmethod
    def before_next_page(player, timeout_happened):
        import time
        player.participant.expiry = time.time() + 5*60
============================================
    
Also, is there any impact whatsoever whether import time is appended at the top of ___init___.py, or within the function as above?

#2 by Chris_oTree

It's the same thing. But as your code gets longer, you will see it's more concise to define participant = player.participant once at the top.

As for the import, it's the same thing either way.

Write a reply

Set forum username