Pobieranie nazwy klasy

Odpowiedz Nowy wątek
2018-11-06 10:21
Świetny Kura
0

Hej, czy istnieje jakas mozliwosc pobrania nazwy klasy w tym miejscu:

``class TestKlass:
param_value = read_param_from_file(file,nazwa_klasy)

 @unittest.skipIf(param_value == 1,"Jakis powod")
 def TestParam(self):
     tutaj instrukcje

chciabym zeby do funkcji read_param_from_file nie trzeba bylo recznie wpisywac nazwa_klasy czyli read_param_from_file(file,'TestKlass') tylko zeby uzyc czegos w stylu self.name tylko ze dla zmiennej klasowej,

Jak masz już self czyli w obrębie metody, to możesz self.__class__.__name__, ale nie tak na "wolnym polu". - Pipes 2018-11-06 11:02

Pozostało 580 znaków

2018-11-06 11:43
0

Nie da się.


Pozostało 580 znaków

2018-11-06 15:55
1

Zależy czy chcesz aby to było zachowane przy dziedziczeniu, by dogrzebać się kto jest rodzicem, czy chcesz nazwę klasy stworzonej.
Jeśli chcesz aby ta metoda była dziedziczona, a zwracała nazwę utworzonej klasy, sposób podał już kolega wyżej w komentarzu, zamieszczę go po hashu w przykładzie poniżej.

Przykład:

class Parent:
    def creator_name(self):
        return type(self).__name__ #Lub self.__class__.__name__

    def always_parent_name(self):
        return Parent.__name__

    def child_or_parent(self):
        return Parent.__name__

class Child(Parent):
    def child_or_parent(self):
        return Child.__name__

class Grandchild(Child):
    pass

if __name__ == "__main__":
    p = Parent()
    print(p.creator_name()) #~ Parent
    print(p.always_parent_name()) #~ Parent
    print(p.child_or_parent()) #~ Parent
    c = Child()
    print(c.creator_name()) #~ Child
    print(c.always_parent_name()) #~ Parent
    print(c.child_or_parent()) #~ Child @Edit: A jednak się nadpisuje [old: (Wbrew pozorom nie nadpisuje się.)]
    g = Grandchild()
    print(g.creator_name()) #~ Grandchild
    print(g.always_parent_name()) #~ Parent
    print(g.child_or_parent()) #~ Child

@Edit: Ślepy jestem i zastanawiało mnie czemu się nie nadpisało. Po prostu nie zamieniłem literek. Wybacz :)


Linux Mint
Arduino / Python 3.5.2
edytowany 5x, ostatnio: Guaz, 2018-11-06 19:41

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0