Dziedziczenie klasy z metody

Odpowiedz Nowy wątek
2019-05-14 07:42
0

Staram się zrozumieć poniższy kawałek kodu i nie potrafię sobie z tym poradzić. Uczyłem się, że dziedziczyć można z klasy jednak tutaj wygląda to tak jakby dziedziczenie było z klasy, która znajduje się w metodzie o nazwie "models"?

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

Pozostało 580 znaków

2019-05-14 08:17
1

Jak masz wątpliwości, zajrzyj do źródeł. Tym bardziej, że najwyraźniej nie masz pojęcia, co tak naprawdę importujesz, a importujesz pod-moduł o nazwie models, który wystawia na zewnątrz m.in. klasę Model - wszystko jest ok, nie robisz żadnej dziwnej magii odwołując się do tego modułu, by wyjąć klasę. Niemniej jednak dobrze by było wiedzieć, co się robi, zamiast snuć dziwne domysły :p

Dowód


Prosząc o pomoc w wiadomości prywatnej odbierasz sobie szansę na otrzymanie pomocy od kogoś bardziej kompetentnego :)

Pozostało 580 znaków

2019-05-14 08:30
0
superdurszlak napisał(a):

Jak masz wątpliwości, zajrzyj do źródeł. Tym bardziej, że najwyraźniej nie masz pojęcia, co tak naprawdę importujesz, a importujesz pod-moduł o nazwie models, który wystawia na zewnątrz m.in. klasę Model - wszystko jest ok, nie robisz żadnej dziwnej magii odwołując się do tego modułu, by wyjąć klasę. Niemniej jednak dobrze by było wiedzieć, co się robi, zamiast snuć dziwne domysły :p

Dowód

Dziękuję za odpowiedź. Tak nie mam pojęcia bo dopiero jestem na samym początku nauki django.

Czyli można powiedzieć, że w tym przypadku odwołuję się do zawartości /django/db a w nim katalog models, który jest pod-modułem? I w ten sposób mógłbym teoretycznie zaimportować też "migrations"?

(learning_log) [[email protected] db]$ pwd
/home/debek/.virtualenvs/learning_log/lib/python3.7/site-packages/django/db
(learning_log) [[email protected] db]$ ls
__init__.py  __pycache__  backends  migrations  models  transaction.py  utils.py
edytowany 5x, ostatnio: debek, 2019-05-14 08:33

Pozostało 580 znaków

2019-05-14 08:36

Moduł django zawiera podmoduł db, który zawiera moduł models, który wystawia na świat klasę Model.

Nie traktujmy odwoływania się do modułów 1:1 jak odwoływania się do katalogów, ale generalnie idea jest podobna - masz jakąś hierarchiczną strukturę i możesz sięgać do kolejnych poziomów etc. aż wydłubiesz to, czego potrzebujesz. W linijce z importem mówisz Z podmodułu db modułu django zaimportuj podmoduł models, natomiast odwołując się do klasy Model mówisz z tego zaimportowanego modułu models wyjmij klasę Model.

Możesz importować bezproblemowo wszystko, co samo w sobie też jest modułem. Generalnie moduł i folder to nie to samo, tzn. owszem, moduł jest jakimś katalogiem, ale też np. wystawia on plik __init__.py w którym np. można "powiedzieć", co dany moduł wystawia na świat. Bez tego pliku interpreter potrafi zgłupieć przy próbach importowania czegokolwiek :P migrations też jest modułem, więc jak najbardziej można z niego korzystać. No i oczywiście importować możesz moduły, klasy Pythonowe etc, jak zrobisz moduł z folderu ze zdjęciami kotów, to nie zaimportujesz tym do kodu zdjęć kotów :)


Prosząc o pomoc w wiadomości prywatnej odbierasz sobie szansę na otrzymanie pomocy od kogoś bardziej kompetentnego :)
edytowany 1x, ostatnio: superdurszlak, 2019-05-14 08:41
Dziękuję :)) - debek 2019-05-14 08:37

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