在python中创建一个新类型
在Python3.x中有没有创建新类型的方法?我只能在C++中找到方法。(顺便说一下,我不是指添加/编辑语法) 基本上我想做的是创建一个lexer,在这里我扫描输入,python已经可以做int和string了,但是如果我想要另一个数据类型,比如name,我如何分配它以便我可以做 例如:在python中创建一个新类型,python,python-3.x,types,Python,Python 3.x,Types,在Python3.x中有没有创建新类型的方法?我只能在C++中找到方法。(顺便说一下,我不是指添加/编辑语法) 基本上我想做的是创建一个lexer,在这里我扫描输入,python已经可以做int和string了,但是如果我想要另一个数据类型,比如name,我如何分配它以便我可以做 例如: #这是可以做到的 a=“字符串” 类型(a) > #我该怎么做? b=我的名字 类型(myName) > 您可能想要这样的东西,一个类。在源代码中,您在Python中看到的所有对象类型都是class形式 &
#这是可以做到的
a=“字符串”
类型(a)
>
#我该怎么做?
b=我的名字
类型(myName)
>
您可能想要这样的东西,一个类。在源代码中,您在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
>>类myName:
... 定义初始化(self,name):
... self.name=名称
... 定义(自我):
... 返回self.name
...
>>>b=我的名字(“约翰”)
>>>类型(b)
>>>印刷品(b)
约翰
输出与预期略有不同的原因是类的名称是myName
,因此type()
返回的就是这个名称。另外,我们在类
名称之前获得了\uuuu main.
,因为它是当前模块的本地名称。您可以看看元类:
但是,您到底想实现什么?简单的回答是,如果不编辑源代码(用C编写),就无法用python创建新类型
然而,在python中创建类的答案可能更容易,因为编辑源代码可能会造成与包的兼容性问题(可能是这样)。。或者,您的意思是,您希望能够使用文字值创建名称对象,就像整数使用数字、字符串使用引号、字典使用花括号和冒号一样?我认为您不能修改语言的语法来添加这样的新东西。请参阅PyParsing库。它可能会帮助您进行词法分析和解析。有关类型和类的说明,请参阅。您可能希望使用类而不是实现新类型。如果您希望创建一个没有任何关联方法或属性的唯一类型,可以使用+1的3参数版本,这是显而易见的正确答案。你可以狡辩说它在“语言的设计者想把它称为‘类型’”上失败了,但这与其说是答案,不如说是问题的缺陷。这几乎是完美的!有没有办法将类型改为myName而不是main.myName?还有一种方法可以将字符串转换为这种类型吗?例如,main.myName('Jack')与int('4')类似?不确定它何时是模块的本地名称,但执行键入(b)。\uuuu name\uuuu
只会自己返回'myName'
。您当然可以用它进行类型转换,它的工作方式与内置的相同。因此,例如example='bob';a=myName(示例)
的工作原理就是这样。谢谢!有没有一种方法,当我调用print(b)时,我得到的是John而不是。。。就像print('dsds')和print(5)@user3324343参见编辑一样,这正是特殊的\uuu str\uu
函数的作用。如果我对你有帮助的话。元类对于这个任务来说开销太大了,这不是真的。可以创建从类型继承的对象。这被称为“元类”。