People need to handle this like
duck typing. When interacting with other people, you don't need to make sure that they're of type Boy or type Girl or whatever. It doesn't matter. Just make sure they have implementations of the methods you expect to call, and that these work in the way that your own behavior expects. For example, unless you intend to call
thisGuy.fuck(me), you probably don't care whether it relies on
Genitalia.penis or
Genitalia.vagina, or indeed any other module. Moreover, construct your error handlers in a reasonable fashion - instead of throwing up a giant red warning and crashing the program (that is, your relationship with somebody), try to handle things a bit more gracefully. And keep in mind that you're the one throwing the error - you're not a standards organization, so you just kind of have to live with how everybody else does their thing.
Now, you can certainly implement your own methods and have them check particular attributes. If you want your
makeFriends() method to ensure your target has no
trans variable set to
True, fine, although it's generally poor design and I'll call you kind of an asshole. But that's your own particular implementation, and not the way the entire system ought to work.
I make this post fully aware of the risk that the thread will be locked. I choose to be optimistic.