/
Вопросы и ответы
/
Python
/

Что делает метод type python?

Что делает метод type python?

4 года назад

Andrey Moshkov

Ответы

2

Функция type() возвращает тип данных, к которому принадлежит переданный ей объект:

1
2
3
4
5
6
7
8
9
10
11
a = ('apple', 'banana', 'cherry')
b = 'Hello World'
c = 33

x = type(a)
y = type(b)
z = type(c)

print(x) # => <class 'tuple'>
print(y) # => <class 'str'>
print(z) # => <class 'int'>

4 года назад

Владимир Устянивский

2

Метод type() в Python возвращает тип данных объекта. Он может быть использован для определения типа переменной или объекта во время выполнения программы.

Примеры использования метода type():

  1. Определение типа переменной:
1
2
x = 5
print(type(x))  # <class 'int'>
  1. Определение типа объекта:
1
2
3
4
5
class MyClass:
    pass

obj = MyClass()
print(type(obj))  # <class '__main__.MyClass'>
  1. Проверка типа объекта:
1
2
3
x = "Hello"
if type(x) == str:
    print("x is a string")
  1. Создание нового класса с помощью type():
1
2
3
MyClass = type('MyClass', (), {})
obj = MyClass()
print(type(obj))  # <class '__main__.MyClass'>

Таким образом, метод type() в Python позволяет узнать тип данных объекта, что может быть полезно при разработке программ и отладке кода.

3 года назад

Olga Pejenkova

0

Функция type() либо возвращает тип объекта, либо возвращает объект нового типа на основе переданных аргументов.

Метод имеет две разные формы:

  • С параметром одного объекта - type(obj). Если передаётся один объект, функция возвращает его тип.
  • С тремя параметрами - type(name, bases, dict). Если в type() передаются три параметра, он возвращает объект нового типа.

Эти три параметра:

  1. Название. Название класса; становится атрибутом name
  2. Bases. Кортеж, определяющий базовый класс; становится атрибутом bases
  3. dict. Словарь, который представляет собой пространство имен, содержащее определения для тела класса; становится атрибутом dict
1
2
3
4
5
6
7
8
9
10
o1 = type('X', (object,), dict(a='Foo', b=12)) 
print(type(o1)) # <class 'type'>
print(vars(o1)) # {'a': 'Foo', 'b': 12, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'X' objects>, '__weakref__': <attribute '__weakref__' of 'X' objects>, '__doc__': None}
class test:
    a = 'Foo'
    b = 12
    
o2 = type('Y', (test,), dict(a='Foo', b=12)) 
print(type(o2)) # <class 'type'>
print(vars(o2)) # {'a': 'Foo', 'b': 12, '__module__': '__main__', '__doc__': None}

2 года назад

Алёна Шереметьева

0

type(obj) возвращает тип объекта:

1
2
3
4
print(type(5))        # => <class 'int'>
print(type("привет")) # => <class 'str'>
print(type([1, 2]))   # => <class 'list'>
print(type(None))     # => <class 'NoneType'>

Так узнают, с чем работает программа: например, что пришло из input() или из JSON.

Только название типа

1
print(type(3.0).__name__)  # => float

Проверка типа

1
2
3
x = 5
print(type(x) == int)   # => True
print(type(x) is int)   # => True

Для проверок в коде обычно используют isinstance(): он учитывает наследование.

1
2
print(isinstance(True, int))  # => True — bool наследует int
print(type(True) is int)      # => False — тип True это bool

При отладке type() показывает точный тип. В условиях программы пишут isinstance().

Частая находка при отладке

1
2
age = input("Возраст: ")   # ввод: 25
print(type(age))           # => <class 'str'>

input() всегда возвращает строку. Поэтому age + 1 вызовет TypeError. Переведите в число: age = int(age).

Таблица типов

Значениеtype()
5int
3.14float
"text"str
Truebool
[1, 2]list
(1, 2)tuple
{"a": 1}dict
{1, 2}set
NoneNoneType

type с тремя аргументами

type(имя, родители, атрибуты) создаёт новый класс. Это то же самое, что объявить класс через class:

1
2
Point = type("Point", (), {"x": 0, "y": 0})
print(Point.x)  # => 0

В обычном коде так не пишут. Приём встречается во фреймворках, которые создают классы на лету.

Типы данных разбирают в бесплатном курсе «Основы Python», классы — на курсе «ООП на Python».

8 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845