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'>
答案 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
的答案可能是更容易的路径,因为编辑源代码可能会导致包的兼容性问题(可能会说)。