python – Programação Orientada a Objetos

estou fazendo um problema o mesmo possui relacionamento entre classes, tenho apenas a descrição e venho tentando solucionar fazendo o diagrama primeiro para depois ir para Python, no entanto estou com duvidas ao aplicar o conceito de associações, encapsulamento e também herança.
Fiz o diagrama mas não consegui entender qual classe que pode herdar um método ou atributo das que existem.

  • Em uma clínica trabalham médicos e existem pacientes internados.
  • Cada médico é identificado pelo seu CRM, possui um CPF, um RG, um
    nome, um telefone e recebe um salário na clínica.
  • Um médico tem formação em diversas especialidades (ortopedia,
    traumatologia, infectologia, etc), mas só exerce uma delas na
    clínica.
  • Para todo paciente internado na clínica são cadastrados os seguintes
    dados pessoais: nome, RG, CPF, endereço, telefone e data de
    nascimento.
  • Um paciente tem sempre um determinado médico como responsável.
  • Pacientes estão sempre internados em quartos individuais, que são
    identificados por um número e pelo andar da clínica em que estão
    localizados.
  • Diariamente, um médico passa nos quartos para visitar os pacientes, e
    registra as observações realizadas sobre o estado do paciente.
  • Essas observações são cadastradas no sistema para futuras consultas
    ao histórico médico do paciente. Esse histórico deve registrar a
    data, o horário, a observação realizada e o nome do médico que a
    registrou.

Comecei a fazer esse código de acordo com o relacionamento que criei (postei a imagem mais abaixo).

class Especialidade:
    def __init__(self, especialidade):
        self.especialidade = especialidade


class Medico:
    def __init__(self, especialidade, crm, cpf, rg, nome, telefone, salario):
        super().__init__(especialidade)
        self.__rg = rg
        self.nome = nome
        self.crm = crm
        self.__cpf = cpf
        self.__telefone = telefone
        self.__salario = salario


class Paciente:
    def __init__(self, nome, endereco, rg, cpf, telefone, data_nasc, nome_medico):
        self.nome = nome
        self.endereco = endereco
        self.rg = rg
        self.cpf = cpf
        self.telefone = telefone
        self.data_nasc = data_nasc
        self.nome_medico = nome_medico


class Quarto:
    def __init__(self, numero, andar):
        self.numero = numero
        self.andar = andar

Relacionamento que fiz.
inserir a descrição da imagem aqui

Se alguém puder me ajudar eu agradeço.