Gae: come accedere a un valore di proprietà dall’interno @classmethod

come possiamo accedere a un valore di proprietà all’interno di un @classmethod? per esempio:

class Account(polymodel.PolyModel):
  someprop = ndb.StringProperty(required=True)
​
    @classmethod
    def get_or_create_someprop(cls):
        if not cls.someprop:
            # create someprop
        else: 
            return cls.someprop

in questo esempio di codice sopra, sto cercando di creare someprop se non esiste, o restituirlo se esiste già. ho assunto che il codice di cui sopra avrebbe raggiunto questo. tuttavia, il primo passo che devo fare è accedere al valore someprop all’interno del metodo di classe. l’utilizzo di cls.someprop non restituisce il valore di someprop ma restituisce StringProperty('state').

ho cercato di utilizzare this e self che sono undefined.

quindi, è possibile accedere a un valore di proprietà di un’entità utilizzando un metodo di classe? se è così, come?

EN From: GAE: How to access a property value from within @classmethod

More similar articles:

1 Comment

  1. in generale non si può farlo da un metodo di classe perché una proprietà appartiene ad un oggetto, cioè un’istanza della classe (la classe è solo il generatore di oggetti). in altre parole è necessario l’argomento self per riferirsi all’oggetto e alle sue proprietà.

    nel vostro caso particolare la classe è un modello di entità (il modello per la creazione di entità), non un’entità e si può solo fare riferimento a una proprietà di un’entità stessa.

    ma si dovrebbe essere in grado di raggiungere ciò che si cerca semplicemente non dichiarandolo un metodo di classe – allora diventa un metodo dell’oggetto / entità e in tal caso è possibile fare riferimento alla proprietà dell’entità tramite self invece di cls: self.someprop.

    vorrei rendere il controllo un po ‘più specifico, però, per coprire il caso in cui la proprietà ha un valore come 0 o una stringa vuota che viene interpretata da python come False in un controllo logico: if self.someprop is None invece di if not self.someprop.

Leave a Reply

Your email address will not be published. Required fields are marked *