Типы данных, которые мы изучили ранее, являются классами, и в классах мы можем использовать множество методов.
В определении класса используется ключевое слово class , а структура синтаксиса следующая:
className:''''Документ класса'''content
Имя — это имя класса, который мы хотим создать. Обратите внимание, что мы стараемся использовать заглавные буквы при его использовании. Если мы используем два слова для его имени, первые буквы этих двух слов должны быть заглавными.
Документация класса — это информация, написанная для нас, чтобы помочь нам понять этот класс.
Содержимое — это тело класса в классе, включая переменные, методы, атрибуты и т. д. Если нам не нужно временно добавлять содержимое при определении класса, мы можем использовать оператор pass в качестве оператора-заполнителя.
Давайте определим класс:
classSchool: #Таким образом мы определяем класс с именем School'''Определим школьный класс'''passschool=School()#Таким образом мы вызываем этот класс print(type(school))#Pass output Взгляните на его типография (школа)
Результат:
<class'__main__.School'><__main__.Schoolobjectat0x03372DD8>
Из результатов мы видим, что школа — это класс, а из второй строки мы видим, что школа — это экземпляр класса School.
При создании класса часто создается метод __init__(). Этот метод является методом построения, то есть этот метод будет использоваться каждый раз при вызове класса, в этом методе также передаются параметры.
Этот метод должен содержать параметр self, который также должен быть первым параметром. Этот параметр указывает на сам экземпляр и может получить доступ к свойствам и методам, существующим в этом классе.
Посмотрите на следующий пример:
classSchool: #Таким образом мы определяем класс. Если мы хотим вызвать этот класс, '''определите школьный класс''' def__init__(self):print('Вот метод __init()__')def__judge__( self) :print('Определите, вызван ли этот метод')school=School()
Результат:
Вот метод __init()__
Из вывода мы видим, что пока вызывается этот класс, автоматически вызывается метод __init__, но следующий метод __judge__ не вызывается.
Мы также можем использовать цикл, чтобы проверить, будет ли метод init использоваться каждый раз при вызове этого класса:
Посмотрите на код ниже:
classSchool:'''Определить школьный класс'''count=0def__init__(self):School.count+=1print('Это %d-е использование метода __init()__'%School.count)foriinrange(5 ): Школа()
Результат:
Вот первое использование метода __init()__. Вот второе использование метода __init()__. Вот третье использование метода __init()__. метод Вот пятое использование метода __init()__
Из выходных данных видно, что мы используем метод init 5 раз. Когда мы вызываем этот класс в первый раз, счетчик равен 0, а затем метод init добавляется на 1. Значение school.count в методе init увеличивается. каждый раз 1. Тогда внешний счетчик не изменится. На этом примере мы можем научиться использовать init.
Когда мы изучаем функции, передача параметров определена в имени функции, а в классе нам удобнее передавать параметры через метод init.
Посмотрите на следующий пример:
classGetAge:def__init__(self,name,age):self.name=nameself.age=ageprint('Возраст %s — %d'%(name,age))GetAge('Xiao Ming',18)
Результат:
Сяо Мину 18 лет.
Следует отметить, что self важен и должен быть размещен первым. Затем, когда мы вызываем этот класс, количество параметров (исключая self), содержащихся в методе init, должно быть равно фактическому количеству вызываемых параметров. прошедший.