在Python中创建新类型

13 投票
3 回答
50289 浏览
提问于 2025-04-17 23:50

在Python 3.x中,有没有办法创建一个新的类型?我只找到在C++中做到的方法。(顺便说一下,我不是指添加或编辑语法)

基本上,我想做的是创建一个词法分析器,也就是扫描输入。Python已经可以处理整数和字符串,但如果我想要另一个数据类型,比如名字,我该怎么做才能让它可以使用呢?

举个例子:

    # This can be done
    a = "string"
    type(a)
    > <class, 'str'>

    # How can I do this?
    b = myName
    type(myName)
    > <class, 'name'>

3 个回答

-8

简单来说,你不能在Python中创建一个新类型,而不去修改源代码(这个源代码是用C语言写的)。

不过,创建一个class(类)在Python中可能是更简单的办法,因为修改源代码可能会导致和其他软件包不兼容的问题(这可能会发生)。

2

你可以看看元类的内容:http://eli.thegreenplace.net/2011/08/14/python-metaclasses-by-example/

不过,你到底想要实现什么呢?

22

你可能想要的是这样的东西,一个 class(类)。在Python的源代码中,你看到的所有对象类型都是以 class 的形式存在的。

>>> class myName:
...     def __init__(self, name):
...         self.name = name
...     def __str__(self):
...         return self.name
...

>>> b = myName('John')
>>> type(b)
<class '__main__.myName'>
>>> print(b)
John

输出结果和你预期的稍微有点不同,原因是这个 class 的名字是 myName,所以 type() 返回的就是这个名字。此外,在 class 名字前面会有 __main__.,这是因为它是当前模块的本地内容。

撰写回答