In your case, `a.touches(A)` returns `False` because documentation says:

> `touches` returns `True` if the objects have at least one point in common and
> **their interiors do not intersect** with any part of the other.

[![enter image description here][1]][1]

Also `A.contains(a)` returns `False` because a lot of points of `a` lie in the extrior of `A`. Documentation says:

> `contains` returns True **if no points of other lie in the exterior** of the object and at least one point of the interior of other lies in the interior of object.


  [1]: https://i.sstatic.net/0XqXZ.png