在python中创建一个新类型

时间:2014-03-25 15:35:15

标签: python python-3.x types

Python 3.x中有没有办法创建新类型?我只能找到用c ++做的方法。

基本上我想要做的是创建一个词法分析器,我扫描输入和python已经可以做int和string,但是如果我想要另一个数据类型如name,我怎么能分配它以便我能做...

EX)

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

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

3 个答案:

答案 0 :(得分:7)

你会想要这样的东西,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()返回的是__main__.。另外,我们在class名称之前得到{{1}},因为它是当前模块的本地名称。

答案 1 :(得分:1)

您可以查看元类:http://eli.thegreenplace.net/2011/08/14/python-metaclasses-by-example/

但是,你究竟想要实现什么目标?

答案 2 :(得分:-3)

简短的回答是,如果不编辑源代码(用C语言编写),就无法在python中创建新类型。

然而,在python中创建class的答案可能是更容易的路径,因为编辑源代码可能会导致包的兼容性问题(可能会说)。