在python中创建新类型

2024-04-20 06:52:32 发布

您现在位置:Python中文网/ 问答频道 /正文

Python 3.x中是否有创建新类型的方法?我只能用c++来实现。

基本上我想做的是创建一个lexer,在这里我扫描输入,python已经可以做int和string了,但是如果我想要另一个数据类型,比如name,我如何分配它以便我可以做。。。

前)

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

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

Tags: 方法name类型stringtypebethiscan
3条回答

简而言之,如果不编辑源代码(用C编写),就无法在python中创建新类型。

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

你想要这样的东西,一个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__.,因为它是当前模块的本地名称。

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

然而,你到底想实现什么?

相关问题 更多 >