在Python中创建新类型
在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__.
,这是因为它是当前模块的本地内容。