Durante l'esecuzione di oop in python dove devo aggiungere il logger

0

Quando esegui oop in python dovrei aggiungere il logger.

Devo aggiungerlo:

  • prima della classe Rocket() : e dagli un ambito globale al file o
  • dopo la classe Rocket() : e assegnagli un ambito di classe.

La sintassi consente entrambi. Ma quale sarebbe considerato più corretto nella cultura python.

Supponiamo che abbia una classe

class Rocket():
# Rocket simulates a rocket ship for a game,
#  or a physics simulation.

def __init__(self):
    # Each rocket has an (x,y) position.
    self.x = 0
    self.y = 0


def move_up(self):
    # Increment the y-position of the rocket.
    self.y += 1
    
posta John Boufford 11.07.2018 - 02:39
fonte

1 risposta

0

Questo non importa molto. La registrazione è in gran parte ortogonale al design del tuo codice, quindi non sempre appartiene chiaramente a una particolare classe o modulo.

Tuttavia, molti framework di registrazione consentono di filtrare in base al nome del logger, dove questo nome del logger è in genere il nome completo di una classe o di un modulo. In tal caso, pensa se vuoi filtrare solo per quel modulo o anche per quella particolare classe. I logger per classe potrebbero anche essere più appropriati se vuoi che le classi ereditate utilizzino lo stesso registratore, ma lo troverei insolito.

In Python, in genere è più conveniente utilizzare variabili globali a livello di modulo anziché variabili di classe a causa delle regole di ambito. Per esempio. nei tuoi metodi dovresti accedere a un membro della classe come Rocket.LOGGER , mentre LOGGER farebbe riferimento a una variabile a livello di modulo. Inoltre, le variabili di livello di classe sono visibili come variabili di istanza. Per esempio. potremmo quindi accedere a some_rocket.LOGGER . Naturalmente è possibile rendere il logger pseudo-privato dandogli un nome doppio-underscore, ma dove possibile l'approccio migliore è quello di evitare oggetti / classi.

    
risposta data 14.07.2018 - 13:11
fonte

Leggi altre domande sui tag