<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno ven 31 dic 2021 alle ore 14:25 Massimo Masson <<a href="mailto:max@studiomasson.it">max@studiomasson.it</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">...<br>
Rapidamente, potresti "staticizzare" i due path nella classe, ad esempio:<br>
<br>
class Account(object):<br>
src = 'sorgente_'<br>
dst = 'destinazione_'<br>
<br>...<br>
<br>
poi magari cerca sui decoratori @staticmethod ed anche @classmethod.<br>
Ma intanto credo faccia quello che hai chiesto...<br>
<br></blockquote><div><br></div><div>A dire il vero no, perche' i percorsi li devo definire al di fuori della classe.</div>Mi sono rinfrescato la memoria sui name space, class variables and class methods grazie al mitico Corey Shafer e ho trovato la risposta :-)<br><a href="https://www.youtube.com/watch?v=ZDa-Z5JzLYM&list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc">https://www.youtube.com/watch?v=ZDa-Z5JzLYM&list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc</a></div><div class="gmail_quote"><br></div><div class="gmail_quote">import os.path<br><br>class Account(object):<br><br> def __init__(self, name):<br> <a href="http://self.name">self.name</a> = name<br> self.src_path = os.path.join(Account.src_path, <a href="http://self.name">self.name</a>)<br> self.dst_path = os.path.join(Account.dst_path, <a href="http://self.name">self.name</a>)<br><br> @classmethod<br> def set_commont_paths(cls, src_path, dst_path):<br> cls.src_path = src_path<br> cls.dst_path = dst_path<br><br> def export(self):<br> # do many things<br> print(f'export account {<a href="http://self.name">self.name</a>} from {self.src_path} to {self.dst_path}')<br><br>Account.set_commont_paths('/opt/', '/mnt/backups')<br>instance = Account('john.doe')<br>instance.export()<br>instance = Account('someone')<br>instance.export()</div><div class="gmail_quote"><br></div><div class="gmail_quote">risultato:<br></div><div class="gmail_quote"><br></div><div class="gmail_quote">export account john.doe from /opt/john.doe to /mnt/backups/john.doe<br>export account someone from /opt/someone to /mnt/backups/someone</div><div class="gmail_quote"><br></div><div class="gmail_quote">I punti chiave sono: <br></div><div class="gmail_quote">- aver usato il nome della classe Account nel metodo __init__ in da leggere la variabile al di fuori dello scope della funzione/metodo.</div><div class="gmail_quote">- aver creato un class method che modifica le variabili di classe.</div><div class="gmail_quote"><br></div><div class="gmail_quote">Notare che prima di istanziare degli account, devo per forza richiamare il class method Account.set_commont_paths, altrimenti al costruttore mancheranno le variabili di classe.<br></div></div>