首页Python【Python内置函数】t...

【Python内置函数】type()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

type() 函数用于获取对象的类型。

type() 函数的基本语法如下:

type(object)type(name, bases, dict, **kwds)
参数说明:
  • object:要返回其类型的对象。如果不提供此参数,type() 将返回 <class ‘type’>,表示类型本身的类型;
  • name:类的名称字符串,会成为类的 __name__ 属性。
  • bases:包含基类的元组,会成为类的 __bases__ 属性;如果为空,则会自动添加 object,因为 object 是所有类的最终基类。
  • dict:包含类体中的属性和方法定义的字典;在成为类的 __dict__ 属性之前,可能会被复制或包装。

返回值:

  • 如果只传递一个对象参数,返回该对象的类型。

  • 如果传递了三个参数,返回一个新的类型对象,这是一种动态创建类的方式,本质上与类定义语句相似。

02
使用

下面是一些使用 type() 函数的示例:

  • 示例 1:单个参数——返回对象的类型

只传递一个对象参数时,返回该对象的类型。返回值是一个类型对象,通常与通过 object.__class__ 获取的结果是同一个对象。

a = {"a": 1}
print(type(a))
# 输出:<class 'dict'>
print(a.__class__)
# 输出:<class 'dict'>

测试对象的类型的话,推荐使用 isinstance() 内置函数来,因为它会考虑子类关系。

在下面的示例中,isinstance(dog,Animal)正确地判断出dogAnimal类的实例,包括其子类Dog的实例。而type(dog) == Animal则返回False,因为type(dog)得到的是Dog类型,而不是Animal类型。这体现了isinstance()在处理继承关系时的优势。

class Animal:
    pass

class Dog(Animal):
    pass

dog = Dog()
print(isinstance(dog, Animal))
# 输出:True
print(type(dog) == Animal)
# 输出:False


  • 示例 2:三个参数——动态创建类

type() 也可以用来动态创建类。这在需要程序运行时创建类时非常有用。

  • 动态创建一个新类:

在下面的示例中,通过type()动态创建了一个名为MyClass的新类,它继承自object,有一个属性attr和一个方法my_method

# 动态创建了一个名为MyClass的类
MyClass = type('MyClass', (object,), {'attr''value''my_method': lambda self: 'Hello'})

print(MyClass)
# 输出:<class '__main__.MyClass'>
print(MyClass.__name__)
# 输出:MyClass
print(MyClass.__bases__)
# 输出:(<class 'object'>,)
print(MyClass.attr)
# 输出:value
print(MyClass().my_method())
# 输出:Hello
  • 动态创建一个与现有类相同的类
在下面的示例中,通过type()动态创建一个类,并与一个已存在的类具有相同的方法。
# 现有类
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"My name is {self.name} and I am {self.age} years old.")

# 使用 type() 动态创建相同的类
Person2 = type('Person2', (object,), {'__init__': Person.__init__, 'introduce': Person.introduce})

# 创建两个实例
person1 = Person("Alice", 30)
person2 = Person2("Bob", 25)

# 调用方法
person1.introduce()
# 输出:My name is Alice and I am 30 years old.
person2.introduce()
# 输出:My name is Bob and I am 25 years old.

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments