М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет136/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   132   133   134   135   136   137   138   139   ...   334
Байланысты:
Изучаем Python

my_cars.py

from car import Car, ElectricCar

my_beetle = Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_descriptive_name())

my_tesla = ElectricCar('tesla', 'roadster', 2019)
print(my_tesla.get_descriptive_name())
Чтобы импортировать несколько классов из модуля, разделите их имена запя-
тыми 

. После того как необходимые классы будут импортированы, вы можете 
создать столько экземпляров каждого класса, сколько вам потребуется.
В этом примере создается обычный автомобиль Volkswagen Beetle 

и электро-
мобиль Tesla Roadster 

:
2019 Volkswagen Beetle 
2019 Tesla Roadster
Импортирование всего модуля
Также возможно импортировать весь модуль, а потом обращаться к нужным клас-
сам с использованием точечной записи. Этот способ прост, а полученный код легко 
читается. Так как каждый вызов, создающий экземпляр класса, включает имя моду-
ля, в программе не будет конфликтов с именами, используемыми в текущем файле.
my_cars.py

import car

my_beetle = car.Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_descriptive_name())

my_tesla = car.ElectricCar('tesla', 'roadster', 2019)
print(my_tesla.get_descriptive_name())
В точке 

импортируется весь модуль 
car
, после чего программа обращается к нуж-
ным классам с использованием синтаксиса 
имя_модуля
.
имя_класса
. В точке 

сно-
ва создается экземпляр Volkswagen Beetle, а в точке 

— экземпляр Tesla Roadster.


Импортирование классов
191
Импортирование всех классов из модуля
Для импортирования всех классов из модуля используется следующий синтаксис:
from 
имя_модуля
import *
Использовать этот способ не рекомендуется по двум причинам. Прежде всего, 
бывает полезно прочитать команды 
import
в начале файла и получить четкое пред-
ставление о том, какие классы используются в программе, а при таком подходе 
неясно, какие классы из модуля нужны программе. Также возможны конфликты 
с именами в файле. Если вы случайно импортируете класс с именем, уже при-
сутствующим в файле, в программе могут возникнуть коварные ошибки. Почему 
я привожу описание этого способа? Хотя использовать его не рекомендуется, ско-
рее всего, вы встретите его в коде других разработчиков.
Итак, если вам нужно импортировать большое количество классов из модуля, 
лучше импортировать весь модуль и воспользоваться синтаксисом 
имя_модуля
.
имя_класса
. Хотя вы не видите перечень всех используемых классов в начале 
файла, по крайней мере ясно видно, где модуль используется в программе. Также 
предотвращаются потенциальные конфликты имен, которые могут возникнуть при 
импортировании каждого класса в модуле.
Импортирование модуля в модуль
Иногда классы приходится распределять по нескольким модулям, чтобы избежать 
чрезмерного разрастания одного файла и хранения несвязанных классов в одном 
модуле. При хранении классов в нескольких модулях может оказаться, что один 
класс из одного модуля зависит от класса из другого модуля. В таких случаях не-
обходимый класс можно импортировать в первый модуль.
Допустим, класс 
Car
хранится в одном модуле, а классы 
ElectricCar
и 
Battery
— 
в другом. Мы создадим новый модуль с именем 
electric_car .py
(он заменит файл 
electric_car .py
, созданный ранее) и скопируем в него только классы 
Battery
и 
ElectricCar
:


Достарыңызбен бөлісу:
1   ...   132   133   134   135   136   137   138   139   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет