我对Python如何知道某些事情有疑问。例如,当我写
a_list = ["car", "plane"]
print(a)
Python知道a_list是一个列表。这是如何运作的?它在python的默认模块中写在哪里?
我想创建一个有点像列表的对象,但是当我想要获取特定位置的项目时,我想写一下
object_list[0]
而不是像
这样的方法object_list.obtain_item(0)
我想创建一个像
这样的对象$"car", "plane"$
# like yo do ["car", "plane"] by default
我无法从列表中继承,因为我正在进行的项目禁止它。
这甚至可能吗?我在这里和互联网上搜索,但我甚至无法用语言来正确搜索。
答案 0 :(得分:0)
要回答您的第一个问题,那将是实施__getitem__
方法的结果。
class Foo():
def __init__(self, x, y):
self.x = x
self.y = y
def __getitem__(self, ind):
if ind == 0:
return self.x
return self.y
x = Foo(1, 2)
print(x[0])
1
print(x[1])
2
请注意,这是一个非常简单的实现,我还没有使用过列表,因为你说你不能使用它。
要回答您的第二个问题,这将涉及更改语言的基本语法和语法,作为语言的最终用户,您目前无权这样做。
答案 1 :(得分:0)
Python知道a_list是一个列表。这是如何运作的?它在哪里 写在python的默认模块中?
Python解释器识别list文字,然后创建一个列表对象。 Python列表对象是内置于解释器中的标准类型的一部分"。
我想创建一个类似列表的对象,但是当我 想要获得特定位置的物品,我想写一下
您可以使用object.getitem(self, key)。互联网上有很多有用的例子。
我想创建一个像
这样的对象$" car"," plane" $
喜欢哟[" car"," plane"]默认
如果您不想更改Python解释器,那么您可以拥有更少的本地/硬核"解析字符串并自己创建所需对象的解决方案,例如:
>>> def my_parser(s):
... return [i.strip('"') for i in s.strip('$').split(', ')]
...
>>> my_parser('$"car", "plane"$')
['car', 'plane']
>>>