Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-02-2012, 14:10   #1
snowx
Junior Member
 
Iscritto dal: Sep 2011
Messaggi: 12
[PYTHON] aggiungere metodi dinamicamente

Sto cercando di aggiungere dei metodi dinamicamente ad una classe attraverso i decoratori, senza sapere a priori il nome del metodo, ho provato a fare cosi ma ci sono dei problemi:

Codice:
def decor(*var):
    def onDecorator(aClass):
        class onInstance:
        
           def __init__(self,*args,**kargs):
                getter='G'+var[0]
                aClass.getter = self.flaz
                self.wrapped = aClass(*args,**kargs)
                   
           def __getattr__(self,attr):
                return getattr(self.wrapped,attr)
                   
           def flaz(self): 
               return self.data
           
        return onInstance
    return onDecorator

@decor('data')
class D:
    def __init__(self, data):
        self.data = data
        self.dimension = len(self.data)
se provo:
Codice:
X=D([5,3])
print(X.Gdata())
mi dice che AttributeError: 'D' object has no attribute 'Gdata'

invece se faccio
Codice:
X=D([5,3])
print(X.getter())
sembra funzionare, il problema è che io vorrei avere il comportamento che ho chiamando X.getter() quando chiamo X.Gdata e più in generale un X.Gxxx, come posso fare?
snowx è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2012, 14:38   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Non ho ancora usato i decoratori di classe per cui potrei anche sbagliare, ma prova a cambiare questo:
Codice:
aClass.getter = self.flaz
con questo:
Codice:
setattr(aClass, getter, self.flaz)
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2012, 16:14   #3
snowx
Junior Member
 
Iscritto dal: Sep 2011
Messaggi: 12
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Non ho ancora usato i decoratori di classe per cui potrei anche sbagliare, ma prova a cambiare questo:
Codice:
aClass.getter = self.flaz
con questo:
Codice:
setattr(aClass, getter, self.flaz)
è perfetto

ma ora mi chiedo, come mai?
snowx è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2012, 16:57   #4
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
DOPPIO.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 25-02-2012, 16:58   #5
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Perché con:
Codice:
aClass.getter = self.flaz
hai aggiunto l'attributo getter (esattamente con questo nome) alla classe (quindi è un attributo di classe) aClass, e gli fornito come valore il metodo bounded flaz.

Per cui tutte le istanze di aClass erediteranno quest'attributo, che funzionerà come un metodo perché... contiene un metodo.

Mentre con:
Codice:
setattr(aClass, getter, self.flaz)
aggiunto sempre ad aClass un attributo, il cui nome è contenuto nella variabile getter, che contiene la stringa che hai costruito prima. Quindi contenendo getter 'Gdata', verrà creato l'attributo di classe che si chiama Gdata, appunto, il cui valore è il solito metodo bounded flaz.

Magie della dinamicità di Python.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Canva lancia Affinity per iPad: sketch, ...
Revolut abbandona OpenAI e Anthropic com...
Xbox Game Pass, tante novità in arrivo i...
Un Googlebook in formato Surface Pro: Le...
Windows 11 non permetterà mai di spostar...
Snowflake porta gli agenti IA dentro il ...
SUSE taglia circa 190 persone, e il CEO ...
Apple Watch Series 12, ribasso di 200€ s...
BMW sfida Tesla FSD: la guida assistita ...
Intel potrebbe interrompere la produzion...
Ubuntu: falla critica nel kernel, per Ca...
Impara dai propri errori e si allena da ...
Google lancia il backup automatico delle...
AMD, spunta una Radeon RX 470 con quattr...
Furto da 6,3 miliardi di dollari a Binan...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v