Python attribut est en lecture seule à l'intérieur de la classe

J'ai une classe:

class Portfolio:
    def __init__(self, value):
        self.value = value

class GenericStrategy:
    def __init__(self, portfolio: Portfolio):
        self.portfolio = portfolio

    def modify_ptf_value(new_value):
        self.portfolio.value = new_value
        # This should return an error

Je'va écrire certaines des stratégies qui va hériter de GenericStrategy. J'aimerais leurs méthodes pour être en mesure de lire l'attribut portefeuille, mais de ne pas le modifier, ni ses attributs.

J'ai lu quelque chose à propos de la @properties décorateur, mais il ne fonctionne que si je ne veux pas l'attribut (et ses attributs) pour être accessible de l'extérieur, je peux toujours modifier l'attribut (et ses attributs) à partir de méthodes 'à l'intérieur de l'objet.
Est-il un moyen de faire de l'attribut (et ses attributs) 'lecture seule' l'exception de la __init__ méthode? Ma conception erronée et doit recommencer depuis le début? Je sais que c'est à l'utilisateur de ne pas modifier "protégés" attributs, mais je tiens à faire preuve de balle. Toute idée est bien acceptée, même si elle nécessite un changement considérable dans la conception de classe.

Grâce

InformationsquelleAutor gionni | 2017-04-05