Incorporating Attributes Throughout Script

I created my own dating game (see attached). In this game, I wanted to incorporate “he, him, his” or “she, her, her” throughout the game depending on the user’s sexual preference. While I was able to do that, my code seems off as my intuition tells me that any code living outside of a method (see lines 43-54) is not the correct way to go about it. However, when I put lines 43-54 in a method/function, the attributes (i.e. “he, him, his, she, her”) were not recognized throughout the rest of the code.

Does this code look off? What should I be doing differently?

Here’s the code:

from sys import exit
from random import randint



class Player(object):


    print "\nHello, what is the preferred sex of your mate? \"male\" or \"female\"."
    preference = raw_input("> ")

    if preference.lower() == "male":
        pref_subject = "he"
        pref_object = "him"
        pref_poss = "his"

    elif preference.lower() == "female":
        pref_subject = "she"
        pref_object = "her"
        pref_poss = "her"

    else:
        print "Please choose male or female"
        start()

    def date(self):
        decisions = Decisions()
        next_scene = 'tinder'

        while next_scene != 'second date':
            date_scene = decisions.next_decision(next_scene)
            next_scene = date_scene.date()

        date_scene = decisions.next_decision(next_scene)
        date_scene.date()

class Tinder(object):

    def __init__(self):
        self.player = Player()

    def date(self):
        print "\n"
        print "-" * 80
        print "\nYou find yourself sitting in your room thinking about how lonely"
        print "and pathetic you are. You desperately want to find love. You know that"
        print "%s is out there somewhere." % self.player.pref_subject
        print "You open up tinder and have to make a decision. Swipe left or right."

        choice = raw_input("> ")

        if choice.lower() == "right":
            print "\n"
            print "-" * 80
            print "\nEveryone knows that you shouldn't go with the first person"
            print "that you see on Tinder. You're better than that."
            return 'bad decision'

        elif choice.lower() == "left":
            print "\n"
            print "-" * 80
            print "\nYou swipe left on the first person. Lucky for you, the 2nd person"
            print "is a dream. You swipe right on %s and %s accepts." % (self.player.pref_object, self.player.pref_subject)
            print "Nice job! You got a date!"
            return 'bar'

        else:
            print "\n"
            print "-" * 80
            print "\nLeft or right are your only options. Please try again."
            return 'tinder'


class Bar(object):

    def __init__(self):
        self.player = Player()

    def date(self):
        print "\nYour date sends you a message asking where you two should go"
        print "for the date. From your experience, suggesting the wrong place can"
        print "could result in the date ghosting you. So you have to be careful."
        print "You have to make a decision: where should you go for your date?"

        choice = raw_input("> ")

        if "bar" in choice:
            print "\n"
            print "-" * 80
            print "\nExcellent choice. Your date is thrilled, especially because"
            print "you suggested a wine bar, which you knew that %s liked wine" % self.player.pref_subject
            print "from %s profile." % self.player.pref_poss
            return 'greeting'

        elif "coffee" in choice:
            print "\n"
            print "-" * 80
            print "\nYour date responds with \"oh.\" You don't like,\"oh.\" You panic"
            print "and suggest something else. Laser tag. Movie at your place. Anything!"
            print "%s never responds." % self.player.pref_subject
            return 'bad decision'

        elif "movie" in choice:
            print "\n"
            print "-" * 80
            print "\nYour date asks you if you're still in middle school with"
            print "that kind of suggestion. Your heart drops. Not thinking about"
            print "your response, you retort with, \"Well yeah! Maybe I am!\""
            print "%s never writes back." % self.player.pref_subject
            return 'bad decision'

        else:
            print "\n"
            print "-" * 80
            print "\nYour date doesn't like that idea. How about another suggestion?"
            return 'bar'

class Greeting(object):

    def __init__(self):
        self.player = Player()

    def date(self):
        print "\nYou walk into the wine bar and immediately you and your date lock"
        print "eyes. You two walk toward each other to greet one another. You decide"
        print "to greet %s by:" % self.player.pref_object

        choice = raw_input("> ")

        if "hug" in choice:
            print "\n"
            print "-" * 80
            print "\nYou hug %s; %s hugs back. %s seems excited to meet you and" % (self.player.pref_object, self.player.pref_subject, self.player.pref_subject)
            print "for this date. %s smiles and asks, \"Shall we head to the bar?\"" % self.player.pref_subject
            print "You nod, and you both walk over together."
            return 'drink'

        elif "kiss" in choice:
            print "\n"
            print "-" * 80
            print "\nWoah there. You're moving awfully fast for a first date. Your"
            print "date thinks so too. The rest of the date is painfully awkward"
            print "as %s looks at %s phone for the entirety of the date. The date" % (self.player.pref_subject, self.player.pref_poss)
            print "ends very early. %s leaves, and you never hear from %s again." % (self.player.pref_subject, self.player.pref_object)
            return 'bad decision'

        elif "shak" in choice:
            print "\n"
            print "-" * 80
            print "\nYour date was about to go for a hug, but you shook %s hand" % self.player.pref_poss
            print "instead. %s seemed bothered by this, as if you weren't interested." % self.player.pref_subject
            print "%s immediately puts you in the friend zone, and once you get into" % self.player.pref_subject
            print "the friend zone, there's never going back. For the rest of the"
            print "date, %s asked you about relationship advice. Ouch." % self.player.pref_subject
            return 'bad decision'

        else:
            print "\n"
            print "-" * 80
            print "\nHmm. Not sure about that one. How about another idea?"
            return 'greeting'


class Drink(object):

    def __init__(self):
        self.player = Player()

    def date(self):
        print "\nYou both are looking over the drink menu. After a few minutes, you both are"
        print "are ready to order. Your date orders first. %s orders a glass of" % self.player.pref_subject
        print "red wine. The bartender then asks you what you would like. Looking"
        print "over the menu, you noticed that they have a great beer selection."
        print "You decide to order:"

        choice = raw_input("> ")

        if "wine" in choice:
            print "\n"
            print "-" * 80
            print "\nNice choice, especially considering that you're at a wine bar."
            print "Your drinks come, and you and your date have a lovely"
            print "conversation. You talk about places you've traveled to, hobbies,"
            print "what you enjoy about your respective careers, and much more."
            print "You both are having a great time."
            return 'conversation'

        elif "beer" in choice:
            print "\n"
            print "-" * 80
            print "\nSure they have a good beer selection, but you are at a wine bar."
            print "You probably should have ordered a glass of wine. Your date is"
            print "confused of why you recommended a wine bar if you were planning to"
            print "order a beer. That decision set the tone for the rest of the date,"
            print "which was terribly awkward."
            return 'bad decision'

        else:
            print "\n"
            print "-" * 80
            print "\nThey don't have that. Your bartender asks you to order"
            print "something else."
            return 'drink'

class Conversation(object):

    def __init__(self):
        self.player = Player()

    mass_area_codes = [
        781, 617, 857
    ]

    def date(self):
        print "\nYou two are having an amazing time. Great conversation, great drinks."
        print "The date comes to end. %s writes %s phone" % (self.player.pref_subject, self.player.pref_poss)
        print "number on a napkin because %s wants to see" % self.player.pref_subject
        print "you again. You two part ways. While you're on the train, you look at"
        print "napkin with %s phone number and realize that you can't actually read the" % self.player.pref_poss
        print "area code. You know that %s's from Mass, so" % self.player.pref_subject
        print "it's likely '781', '617', or '857'. But which one is it?"

        area_code = Conversation.mass_area_codes[randint(0, len(self.mass_area_codes)-1)]
        choice = raw_input("> ")

        if int(choice) == area_code:
            print "\n"
            print "-" * 80
            print "\nYou text %s saying how great of a time you had tonight. %s" % (self.player.pref_object, self.player.pref_subject)
            print "responds with a smiley face and kiss emoji. %s definitely likes" % self.player.pref_subject
            print "you."
            return 'second date'

        else:
            print "\n"
            print "-" * 80
            print "\nYou text %s and someone responds with a smiley face emoji." % self.player.pref_object
            print "You text back and forth for a whole week. You set up a date to"
            print "meet %s. When you arrive to the date, you realize that you've" % self.player.pref_object
            print "been texting the wrong person this whole time. Instead, you've"
            print "been texting a high school student that thinks it is HILARIOUS"
            print "when you show for your date. He is with all of his friends, and"
            print "they're laughing at you. You are humiliated."
            return 'bad decision'

class Bad_Decision(object):

    bad_decisions = [
        '\nYou decide to try other dating apps, but don\'t have any luck.',
        '\nYou move into your mom\'s basement.',
        '\nAll your friends find love. You not so much.'
    ]

    def date(self):
        print Bad_Decision.bad_decisions[randint(0, len(self.bad_decisions)-1)]
        print "You end up living a long and lonely life."
        print "Goodbye"
        exit(0)

class Second_Date(object):


    def date(self):
        print "You both fall in love, get married, and have kids."
        print "All because you made smart decisions on that first date."

class Decisions(object):

    choices = {
        'tinder': Tinder(),
        'bar': Bar(),
        'greeting': Greeting(),
        'drink': Drink(),
        'conversation': Conversation(),
        'bad decision': Bad_Decision(),
        'second date': Second_Date(),
    }

    def next_decision(self, next_scene):
        val = Decisions.choices.get(next_scene)
        return val


player = Player()
player.date()

Hi, I believe I answered you over email, so would you mind posting your follow-up solution here for everyone?