type() e isinstance() em Python com exemplos

โšก Resumo Inteligente

Python `type()` e `isinstance()` sรฃo funรงรตes internas para verificar a classe de um objeto. `type()` retorna o tipo exato, enquanto `isinstance()` verifica se um objeto pertence a uma classe ou tupla de classes. Ambas sรฃo mostradas aqui com exemplos.

  • ๐Ÿ” tipo(): Retorna a classe exata de um objeto, como str, int ou list.
  • โœ… isinstance(): Verifica se um objeto รฉ uma instรขncia de uma determinada classe, retornando True ou False.
  • ๐Ÿงฉ Tipo de trรชs argumentos(): type(name, bases, dict) cria dinamicamente um novo objeto de classe.
  • ???? Subclasses: isinstance() retorna True para subclasses; type() verifica apenas a classe exata.
  • ๐ŸŽฏ Os casos de uso: Valide os tipos de entrada, as variรกveis โ€‹โ€‹de depuraรงรฃo e a lรณgica de ramificaรงรฃo por tipo de objeto.
  • ๐Ÿค– Ajuda da IA: Ferramentas de IA como o Copilot geram verificaรงรตes de tipo (type()) e de instรขncia (isinstance()) sob demanda.

type() e isinstance() em Python

O que รฉ type() em Python?

Python tem uma funรงรฃo integrada chamada type() que ajuda a encontrar o tipo de classe da variรกvel fornecida como entrada. Por exemplo, se a entrada for uma string, vocรช obterรก a saรญda como , para a lista, serรก , etc.

Usando o comando type(), vocรช pode passar um รบnico argumento, e o valor de retorno serรก o tipo de classe do argumento fornecido, exemplo: type(object).

Tambรฉm รฉ possรญvel passar trรชs argumentos para type(), ou seja, type(name, bases, dict), nesse caso, ele retornarรก um novo objeto de tipo.

Sintaxe para tipo()

type() pode ser usado de duas maneiras, conforme mostrado abaixo:

 type(object)
type(namr, bases, dict)

Parรขmetros Tรฉcnicos : tipo (objeto)

  • objeto: Este รฉ um parรขmetro obrigatรณrio. Se este for apenas um parรขmetro passado para type(), ele retornarรก o tipo do parรขmetro.

Parรขmetros Tรฉcnicos : tipo (nome, bases, ditado)

  • nome: nome da classe.
  • bases: (opcional). Este รฉ um parรขmetro opcional e รฉ a classe base
  • ditar: (opcional). Este รฉ um parรขmetro opcional e รฉ um namespace que contรฉm a definiรงรฃo da classe.

Valor de retorno

Se o objeto for o รบnico parรขmetro passado para type() entรฃo ele retornarรก o tipo do objeto.

Se os parรขmetros passados โ€‹โ€‹โ€‹โ€‹para type forem do tipo (objeto, bases, dict), nesse caso, ele retornarรก um novo tipo de objeto.

Exemplo de tipo()

Neste exemplo, temos um valor de string, nรบmero, valor flutuante, um nรบmero complexo, lista, tupla, ditado e conjunto. Usaremos as variรกveis โ€‹โ€‹com tipo para ver a saรญda de cada uma delas.

str_list = "Welcome to Guru99"
age = 50
pi = 3.14
c_num = 3j+10
my_list = ["A", "B", "C", "D"]
my_tuple = ("A", "B", "C", "D")
my_dict = {"A":"a", "B":"b", "C":"c", "D":"d"}
my_set = {'A', 'B', 'C', 'D'}

print("The type is : ",type(str_list))
print("The type is : ",type(age))
print("The type is : ",type(pi))
print("The type is : ",type(c_num))
print("The type is : ",type(my_list))
print("The type is : ",type(my_tuple))
print("The type is : ",type(my_dict))
print("The type is : ",type(my_set))

Saรญda:

The type is :<class 'str'>
The type is :<class 'int'>
The type is :<class 'float'>
The type is :<class 'complex'>
The type is :<class 'list'>
The type is :<class 'tuple'>
The type is :<class 'dict'>
The type is :<class 'set'>

Exemplo: Usando type() para objeto de classe.

Quando vocรช verifica o objeto criado a partir de uma classe usando type(), ele retorna o tipo da classe junto com o nome da classe. Neste exemplo, criaremos uma classe e verificaremos o tipo de objeto criado a partir do teste da classe.

class test:
    s = 'testing'

t = test()
print(type(t))

Saรญda:

<class '__main__.test'>

Exemplo: usando o nome, bases e dict em type()

O tipo tambรฉm pode ser chamado usando a sintaxe: type(name, bases, dict).

Os trรชs parรขmetros passados โ€‹โ€‹para type() ou seja, name, bases e dict sรฃo os componentes que constituem uma definiรงรฃo de classe. O nome representa o nome da classe, as bases sรฃo a classe base e dict รฉ o dicionรกrio de atributos da classe base.

Neste exemplo, usaremos todos os trรชs parรขmetros, ou seja, nome, bases e dict em type().

Exemplo:

class MyClass:
  x = 'Hello World'
  y = 50

t1 = type('NewClass', (MyClass,), dict(x='Hello World', y=50))
print(type(t1))
print(vars(t1))

Saรญda:

<class 'type'>
{'x': 'Hello World', 'y': 50, '__module__': '__main__', '__doc__': None}

Quando vocรช passa todos os trรชs argumentos para type() , ajuda a inicializar uma nova classe com atributos de classe base.

O que รฉ isinstance() em Python?

Python isinstance faz parte de funรงรตes integradas do python. Python isinstance() recebe dois argumentos e retorna verdadeiro se o primeiro argumento for uma instรขncia do classinfo fornecido como o segundo argumento.

Sintaxe isinstance()

isinstance(object, classtype)

Parรขmetros Tรฉcnicos

  • object: Um objeto cuja instรขncia vocรช estรก comparando com o classtype. Ele retornarรก verdadeiro se o tipo corresponder a falso.
  • tipo de classe: um tipo ou classe ou uma tupla de tipos e/ou classes.

Valor de retorno

Ele retornarรก verdadeiro se o objeto for uma instรขncia do tipo de classe e falso se nรฃo for.

Exemplos de isinstance()

Nesta seรงรฃo, estudaremos vรกrios exemplos para aprender isinstance()

Exemplo: isinstance() verificaรงรฃo de nรบmero inteiro

O cรณdigo abaixo compara o valor inteiro 51 com o tipo int. Ele retornarรก verdadeiro se o tipo de 51 corresponder a int, caso contrรกrio, serรก falso.

age = isinstance(51,int)
print("age is an integer:", age)

Saรญda:

age is an integer: True

Exemplo: isinstance() verificaรงรฃo flutuante

Neste exemplo vamos comparar o valor float com o tipo float, ou seja, o valor 3.14 serรก comparado com o tipo float.

pi = isinstance(3.14,float)
print("pi is a float:", pi)

Saรญda:

pi is a float: True

Exemplo: isinstance() verificaรงรฃo de string

message = isinstance("Hello World",str)
print("message is a string:", message)

Saรญda:

message is a string: True

Exemplo: isinstance() verificaรงรฃo de tupla

O cรณdigo verifica uma tupla (1,2,3,4,5) com o tipo tupla. Ele retornarรก verdadeiro se a entrada fornecida for do tipo tupla e falso se nรฃo for.

my_tuple = isinstance((1,2,3,4,5),tuple)
print("my_tuple is a tuple:", my_tuple)

Saรญda:

my_tuple is a tuple: True

Exemplo: isinstance() Definir verificaรงรฃo

O cรณdigo verifica um conjunto ({1,2,3,4,5}, com o tipo set. Ele retornarรก verdadeiro se a entrada fornecida for do tipo definido e falso se nรฃo.

my_set = isinstance({1,2,3,4,5},set)
print("my_set is a set:", my_set)

Saรญda:

my_set is a set: True

Exemplo: verificaรงรฃo de lista isinstance()

O cรณdigo verifica uma lista [1,2,3,4,5],com o tipo list. Ele retornarรก verdadeiro se a entrada fornecida for do tipo lista e falso se nรฃo for.

my_list = isinstance([1,2,3,4,5],list)
print("my_list is a list:", my_list)

Saรญda:

my_list is a list: True

Exemplo: isinstance() verificaรงรฃo de ditado

O cรณdigo verifica se hรก um dict({โ€œAโ€:โ€aโ€, โ€œBโ€:โ€bโ€, โ€œCโ€:โ€cโ€, โ€œDโ€:โ€dโ€}, com o tipo dict. Ele retornarรก verdadeiro se a entrada fornecida รฉ do tipo dict e false se nรฃo.

my_dict = isinstance({"A":"a", "B":"b", "C":"c", "D":"d"},dict)
print("my_dict is a dict:", my_dict)

Saรญda:

my_dict is a dict: True

Exemplo: teste isinstance() em uma classe

O cรณdigo mostra a verificaรงรฃo de tipo da classe com isinstance() . O objeto da classe รฉ comparado com o nome da classe dentro de isinstance(). Retorna verdadeiro se o objeto pertence ร  classe e falso caso contrรกrio.

class MyClass:
    _message = "Hello World"

_class = MyClass()

print("_class is a instance of MyClass() : ", isinstance(_class,MyClass))

Saรญda:

_class is a instance of MyClass() True

Diferenรงa entre type() e isinstance() em Python

modelo() isinstance ()
Python tem uma funรงรฃo integrada chamada type() que ajuda a encontrar o tipo de classe da variรกvel fornecida como entrada. Python tem uma funรงรฃo interna chamada isinstance() que compara o valor com o tipo fornecido. Se o valor e o tipo fornecidos corresponderem, retornarรก true, caso contrรกrio, false.
O valor de retorno รฉ um objeto de tipo O valor de retorno รฉ booleano, ou seja, verdadeiro ou falso.
class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(type(A()) == A)
print(type(B()) == A)

Saรญda:

True
False

No caso do tipo, a verificaรงรฃo da subclasse retorna falso.

class A:
my_listA = [1,2,3]

class B(A):
my_listB = [1,2,3]

print(isinstance(A(), A))
print(isinstance(B(), A))

Saรญda:

True
True

isinstance() fornece um valor verdadeiro quando verificado com uma subclasse.

Perguntas Frequentes

A funรงรฃo `type()` รฉ uma funรงรฃo interna que retorna a classe de um objeto. Com um argumento, ela retorna o tipo do objeto; com trรชs argumentos (nome, classes base, dicionรกrio), ela cria uma nova classe.

A funรงรฃo `isinstance(object, classtype)` verifica se um objeto รฉ uma instรขncia de uma classe ou tupla de classes. Ela retorna `True` se o tipo corresponder e `False` caso contrรกrio.

A funรงรฃo `type()` retorna a classe exata de um objeto e ignora a heranรงa, enquanto `isinstance()` retorna `True` tambรฉm para subclasses. Use `isinstance()` para verificaรงรตes de tipo flexรญveis que respeitam hierarquias de classes.

Sim. Chamar `type(name, bases, dict)` com trรชs argumentos retorna um novo objeto de classe dinamicamente. `name` รฉ o nome da classe, `bases` รฉ uma tupla de classes pais e `dict` contรฉm os atributos.

Sim. O mรฉtodo `isinstance()` retorna `True` quando um objeto รฉ uma instรขncia de uma classe ou de qualquer uma de suas subclasses. Isso o torna mais seguro do que o mรฉtodo `type()` para verificar tipos herdados.

Assistentes de IA como o GitHub Copilot realizam autocompletar verificaรงรตes de `type()` e `isinstance()`, geram verificaรงรตes de validaรงรฃo e sugerem a abordagem correta para um determinado objeto enquanto vocรช escreve. Python.

Sim. Ferramentas com inteligรชncia artificial podem automatizar a inserรงรฃo de verificaรงรตes `isinstance()`, detectar entradas nรฃo verificadas e refatorar comparaรงรตes frรกgeis de `type()` em verificaรงรตes `isinstance()` mais seguras em toda a sua base de cรณdigo.

A funรงรฃo `type()` retorna o objeto da classe correspondente ao valor: `list` para uma lista e `dict` para um dicionรกrio. Ao imprimi-lo, o resultado รฉ algo como `class list` ou `class dict`.

Resuma esta postagem com: