The NodeProxy class does not have its own get method so the one of VertexProxy is called which does not check for element_type.
So you can get a type B object as the return value of g.A.get(123) .
Don't you think it should complain if the object is not of type A?
If you don't know the element_type beforehand you could always use g.vertices.get.
(I assume (didn't check) the issue is the same for Edges)