When instantiating DockerClient object whether through docker.DockerClient(base_url='unix://var/run/docker.sock') or docker.from_env(), inside constructor APIClient object is instantiated:
def __init__(self, *args, **kwargs):
self.api = APIClient(*args, **kwargs)
APIClient itself is inheriting a bunch of classes:
class APIClient(
requests.Session,
BuildApiMixin,
ConfigApiMixin,
ContainerApiMixin,
DaemonApiMixin,
ExecApiMixin,
ImageApiMixin,
NetworkApiMixin,
PluginApiMixin,
SecretApiMixin,
ServiceApiMixin,
SwarmApiMixin,
VolumeApiMixin)
One of the classes it inherits is ContainerApiMixin that exposes methods for interacting with containers, similar to docker container CLI.
As you can see, everything you can do through CLI is accessible through api object inside DockerClient object.
So, the answer to your question is:
client.api.port('<container_id>', <port>)
Resource: source code