我们可以通过以下两种方式在Python中创建对象:
>>> foolist = []
>>> footuple = ()
>>> foostring = ''
>>> type(footuple)
<type 'tuple'>
>>> type(foolist)
<type 'list'>
>>> type(foostring)
<type 'str'>
>>> foolist1 = list
或
>>> foolist1 = list()
>>> footuple1 = tuple()
>>> foostring1 = str()
>>> type(foolist1)
<type 'list'>
>>> type(footuple1)
<type 'tuple'>
>>> type(foostring1)
<type 'str'>
第二种方法很明确,我们几乎总是使用它来创建新对象。但是我无法理解第一种方法的工作。我还能创建另一个行为类似(第一种方式)的类吗?
答案 0 :(得分:2)
第二种方法很明确,我们几乎总是用它来创建新对象。
一旦程序员习惯了列表,集合,字典,元组,字符串等的语法,那么前者通常比较干净,因为字符数受到限制,因此可以使用它立即将元素添加到集合中
我还可以创建另一个行为类似(第一种方式)的类吗?
不能。这是专门为与 builtin Python类型一起使用而设计的语法。与某些其他语言不同,您不能制作自己的“迷你语言”。其他编程语言(例如Haskell实例)允许引入aribtrary运算符。其他语言(例如Prolog)根本不将语义附加到运算符。在某些语言中,您甚至可以介绍整个子语法。
在Python中,语言本身非常固定:{}
创建一个(空)字典,()
空元组,'foo'
,"foo"
,{{1} }等都创建字符串等。因此,解释器具有为此目的构造的一些语法定义。您不能(轻松)添加额外的构造。
您当然可以编写某种解释器(在Python中),该解释器将例如字符串作为输入,从而将其转换为您自己制作的对象。或者,您可以更改Python解释器的源代码(例如CPython或IPython)并添加额外的语法。但是从技术上来说,您已经定义了一种新语言(Python的超集)。