Titlul: Cum declari o clasa in python ? Scris de: Pripoae Teodor Anton din August 11, 2009, 20:02:15 Am si eu o problema legata de python. Am 2 clase, sa zicem foo si bar. Vreau ca din interiorul clasei foo sa pot accesa clasa bar si invers. Doar ca daca fac asa :
Cod:
Imi da ca nu gaseste clasa bar. Cum fac ca sa imi mearga ? Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Sima Cotizo din August 11, 2009, 20:30:36 Daca inteleg bine ce cauti (recursivitate indirecta in Py), incearca sa citesti aici (http://mail.python.org/pipermail/python-list/2005-March/313629.html), poate te ajuta.
Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Pripoae Teodor Anton din August 11, 2009, 20:41:23 Nu chiar, nu vreau sa le import. Pur si simplu le am in aceeasi sursa, si vreau ceva care s-ar face cam asa in c++ :
Cod: class a Da, un fel de recursivitate indirecta. Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Sima Cotizo din August 11, 2009, 20:58:14 Pai citeste tot mesajul. Ei zic ca nu se poate direct si iti sugereaza sa faci 2 "base classes" din care sa le derivezi pe cele de care ai tu nevoie... (am dat peste rezultatul ala pe google cu "python indirect recursion", poate gasesti ceva mai detaliat).
Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Pripoae Teodor Anton din August 11, 2009, 21:42:47 Cam asta imi trebuia, dar daca nu merge o sa incerc altfel.
Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Bogdan-Cristian Tataroiu din August 12, 2009, 17:06:11 Daca folosesti Django, cum cred eu, poti sa faci a = models.ForeignKey("bar") in prima clasa.
Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Pripoae Teodor Anton din August 13, 2009, 21:50:03 Da, pentru Django aveam nevoie, imi merge. Mersi mult :D.
Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Sanduleac Dan din Septembrie 02, 2009, 12:16:11 Intr-adevar, poate iti merge cum a zis bogdan, dar exemplul tau din py nu face acelasi lucru cu cel din C++, unde instantiezi un a() respectiv b() in constructor, si nu static.
Cred ca de fapt vreu sa faci Cod: class foo(models.Model): in fiecare atribuire din __init__, foo sau bar sunt cautate local apoi global, adica apartinand modulei, unde vor fi gasite. Dar important e ca vor fi cautate de-abia la instantiere, cand clasele vor exista deja. Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Bogdan-Cristian Tataroiu din Septembrie 02, 2009, 18:23:54 Exemplu din C e diferit de ce vroia sa faca in python. :) Alea sunt modele de baze de date din Django si functioneaza un pic mai dubios decat clasele normale de python. Proprietatile clasei sunt folosite pentru a determina tipul coloanei in tabelul de baza de date si instanta primeste pentru fiecare proprietate valoarea din tabel. Adica proprietatile instantei nu o sa fie tot un models.ForeignKey, ci o valoare efectiva.
Daca nu incerci sa intelegi cum merg pe dinauntru sunt foarte usor de folosit :) Exemplu din C intr-adevar se implementeaza cum ai zis tu. Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Pripoae Teodor Anton din Septembrie 03, 2009, 14:24:30 Am facut cum a zis Bogdan si a mers. Acum am alta problema : am un script intr-un director, numit grader.py. Am un director contest in acel director, iar in directorul contest, pun pt fiecare concurs cate un alt folder, cu numele concursului, in care o sa se afle un fisier <nume-concurs>-config.py. Eu vreau ca din grader.py sa includ pt un anumit concurs dat ca parametru, contests/<nume-concurs>/<nume-concurs>-config.py. Cum s-ar face asta in python ? Tot ce vreau e sa incarc cele 2 variabile (studs si probs) din <nume-concurs>-config.py (sa le pot accesa din grader.py, dupa ce includ scriptul <nume-concurs>-config.py.
Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Andrei Homorodean din Septembrie 04, 2009, 15:01:56 Poate ar fi mai bine sa-l numesti altcumva, nu config, poate sunt ceva module deja existente si n-o sa mearga.(chiar un nume dinamic in cazul tau)
Daca ai avea scriptul configx.py in acelasi director merge sa-l incluzi direct cu Cod: from configx import * si poti accesa clasele si variabilele specificandu-le direct. In cazul in care scriptul e intr-un alt director poti asa: Cod: import sys (Cauta mai multe despre PYTHONPATH) Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Bogdan-Cristian Tataroiu din Septembrie 04, 2009, 17:10:26 Vrea sa importe un fisier cu nume dinamic si asta e mai greu :) . Adica daca are variabila nume-concurs = "bla", vrea sa importe bla.bla-config.
Nu stiu o metoda eleganta de a face asta :) Poti sa faci ceva de genu Cod: exec("import %s.%s-config" % (nume_concurs, nume_concurs)) exec executa stringul dat ca parametru, dar nu prea cred ca e foarte sigur sa faci asta :) Later edit: Se pare ca exista functia __import__ pentru asta: http://docs.python.org/library/functions.html#__import__ Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Pripoae Teodor Anton din Septembrie 04, 2009, 21:20:32 Asta imi trebuia. Mersi :D.
Titlul: Răspuns: Cum declari o clasa in python ? Scris de: Sanduleac Dan din Septembrie 04, 2009, 22:46:47 Dar nu merge chiar asa, import dirA.dirB.fisier (pentru dirA/dirB/fisier.py). Eu zic ca ai cam 3 posibilitati:
Eu de ex am ales sa folosesc metoda 2, dar in loc sa folosesc un fisier de configurare, daca tot am facut din directorul rundei un pachet, am mutat codul de configurare in __init__.py (de ex pt runda test, in contest/test/__init__.py) si asa poti face direct import test si cu asta basta :) |