如何删除我不喜欢Python的东西?

时间:2010-08-16 00:48:21

标签: python programming-languages

Python是一种很棒的编程语言,但是关于它的某些事情只是让我烦恼不已。

因此,我:

1)想知道如何从语言本身中消除这些烦恼,或者

2)找到一种类似Python的语言,没有这些烦恼。

<小时/> 我喜欢Python的所有除了

  • self :我觉得我需要将“self”作为函数的第一个参数包含在内,这似乎很愚蠢
  • 双重下划线:它看起来很丑陋而且是一个可怕的特殊角色。
  • __ name __ 一直觉得对我来说是个黑客。尝试向新手程序员解释,或者更糟糕的是以perl或ruby或java为生。将魔术变量名称与魔术常量“主要”进行比较会感觉倍增。
  • 阻止给我带来红宝石嫉妒或小叮叮。我喜欢当地的功能。爱他们。我容忍lambda。但我真的非常希望看到更多rubyesque迭代器设置,我们将可调用的函数传递给列表,并且可调用的内联函数可以定义为自由格式。 Python并没有真正做到这一点,所以它不像我想要的语言实验室。
  • 属性没有吸引力,部分原因是因为没有块。我真的不想定义一个命名参数(最有可能是双下划线),然后是两个命名函数,然后THEN声明一个属性。对于如此简单的情况来说,这似乎是非常重要的。只有当所有其他方法都让我失望,或者所有其他方法都覆盖 setattr getattr 时,我才会这样做。

我确实意识到这可能是小烦恼,但对于我每天编程的语言,这些小烦恼可能会变得非常大。

3 个答案:

答案 0 :(得分:7)

pypy是Python本身的一个完整的Python实现(包含你认为烦恼的所有内容,然而它是一种非常高级的实现语言,它甚至可以更容易地改变语言本身的核心比以往任何时候都)。下载它,分叉它,并编辑它来修复你喜欢的任何东西(当然,最好还是将编译器和运行时转换成你的新的非Python语言)。

如果这只是太多的工作(抱怨者很少有兴趣修复他们自己的抱怨,无论你为他们做这样的工作多么容易),只需切换到Ruby,这似乎更符合你的口味 - 或者找到用Ruby编写的Ruby实现(我不知道它是如何被调用的,但肯定会有这样一个强大的语言)和hack 那个一个(用来修复你对Ruby的抱怨)。

与此同时,至少你的一些烦恼让我感到非常困惑。举例来说,关于财产的咆哮:我不明白你的意思。定义R / W属性的常规方法是:

@property
def thename(self):
    """add the geting-code here""

@property.set
def thename(self, value):
    """add the seting-code here""

那么是什么意思>

  

定义一个命名参数(带   双重下划线,最有可能)和   然后是两个命名函数,然后是   声明一个属性

???

我可以问其他问题同样困惑的问题,但是让我们等一下你是否先澄清这个问题(如果澄清的是那种“哦,我不知道它”,即你在抱怨一种语言没有了解其基本原理,当然,我可以猜测这对你的可信度有什么影响; - )。

答案 1 :(得分:2)

这是一个巨魔,你知道自己问题的答案:

self:编写一个废弃它的包装器并继承它。但是如果你要引用有问题的对象,它确实需要一些名字,除非你只是想让它神奇地存在(确实是一个丑陋的东西)......

双重下划线:不要使用它们。简单。它们绝不是必需的。

_name_:再次,如果你愿意,可以将其称为其他内容,并从该基类继承。我不知道这里的问题是什么。你仍然需要一些东西来提供这种功能。

阻止:听起来像你正试图在python中编写ruby或java。你当然可以将一个可调用的函数传递给一个迭代器(你应该阅读有关生成器的内容),但是将其定义为内联会导致严重的代码丑陋。 Python使你可以在线下完成,这样你就不会在内联的未命名函数中得到一半的程序逻辑。我不知道这里的问题是什么。

属性:我不明白你在说什么。在大多数情况下,我当然不会定义多个函数来使用或创建对象的属性。

答案 2 :(得分:0)

如何使用UNIX bash脚本回归基础知识?