Battleship coordinate picker
Here are some observations:


no meaningful comments or docstrings (they are not always needed, but imagine there is that "violent psychopath, who knows where you live" will be reading the code)
PEP8 violations and making things Pythonic:


blank line between class methods, two blank lines between top-level functions and classes (source)
correct import organization
the inline comments formatting
variable naming, if defining a constant, there has to be an underscore between words: 

BOARDLENGTH -&gt; BOARD_LENGTH
BOARDHEIGHT -&gt; BOARD_HEIGHT

a space between arguments after a comma:

ship.show(board, hasprevious=False)
            HERE^

no need for extra () after the class definition
if intersection == []: can be rewritten as if not intersection:
simplify the if condition inside the rotate() method, replace:

if newy &gt;= 0 and newx &gt;= 0 and newy &lt;= BOARDHEIGHT-1 and newx &lt;= BOARDLENGTH-1:


with:

if 0 &lt;= newx &lt;= BOARDLENGTH - 1 and 0 &lt;= newy &lt;= BOARDHEIGHT - 1:


other improvements:


looks like you don't need to make the size an instance variable - you only need it in the constructor
what if instead of multiple repetitive if/else blocks inside the choose_locations(), you would create a mapping between action keys and the shift directions, e.g.:

ACTION_KEYS = {
    'w': 'U',
    's': 'D',
    'a': 'R',
    'd': 'L'
}


Then, we can improve the part determining the shift direction:

key = getch.getch()
if key in ACTION_KEYS:
    ship.shift(ACTION_KEYS[key]) 
    board = ship.show(board)