Pythonic:代码名称与内置冲突

mha*_*vel 4 python package built-in

我目前正在创建一个名为"SET"的代码.代码的名称是首字母缩略词,已经为许多(非编程)原因定义,因此无法更改.

问题:最简单的,我相信最终用户使用我的代码的痛苦方式就是命名包"set".但当然这是一个问题,因为这与内置的set函数冲突.

问题:有哪些可能的解决方案?有些可能(可能更多):

  1. 更改包名称(例如setb).

    import setb
    
    Run Code Online (Sandbox Code Playgroud)

    我真的不愿意,因为那时它会与真实姓名不同

  2. 使包的名称大写(SET)

    import SET
    
    Run Code Online (Sandbox Code Playgroud)

    这将是一个直接的解决方案,但我想知道:这是一个pythonic正确命名的包?此外,我发现这有点痛苦,因为代码中定义的所有模块都会有类似"import SET.xy .."(即大写,写了很多次).但如果这是一种pythonic方式,这不是什么大问题.

  3. 保持名称"设置"

    import set
    
    Run Code Online (Sandbox Code Playgroud)

    那显然不是很好.但只有当用户使用"导入集"时才会出现问题,不是吗?这不应该发生在"正常使用条件"中,因为代码将提供一些脚本来使用它,而不是将它用作标准的python模块.但我们永远不知道,它可以像它一样导入,甚至可能有一些我没有看到的问题(使用内置的设置).

我正在考虑解决方案2.但我真的不确定.也许这不合适,或者你们有更好的解决方案.

PS:我在网络和stackoverflow上发现了一些类似的主题,但它通常处理包内的脚本或模块内的名称.这里的问题实际上与代码的名称有关(只有这样才有意义),因此与包名称的正确命名有关.


编辑

选择的解决方案:我选择使用"SET"作为包名.虽然这里提出了许多好的建议:pyset,semt,setool ......或更明确的"starexoplanettool"(解释缩写).谢谢大家.

编辑#2

我喜欢有趣的解决方案:拥有一个名为S的包,以及一个子包,E ...最终得到:

    import S.E.T
Run Code Online (Sandbox Code Playgroud)

谢谢唐问题.

Gar*_*tty 6

为什么不说明缩写词背后的含义,如果用户迫切需要更短的名字,他们可以做import someetymologyterm as SET或者他们喜欢什么.Python为他们提供了选择,所以它不是世界末日.


S.L*_*ott 5

这是一个包的pythonic正确命名吗?

在这种情况下,没关系.

领先的大写是罕见的(ConfigParser,HTMLParser).Camel-case很少见(cStringIO).但这并不能使所有大写错误.

这只是意味着你应该在下次选择一个更好的首字母缩略词.

"set"是具有最多定义的英语单词.这是一个缩写可能的最差选择.

关键是不要符合或多或少可接受的行为的社区"标准".

关键是写一些有用的东西.

(即大写,写了很多次).

几乎没关系.实际上,人们运行软件比编写软件更频繁.

人们也经常阅读和调整,而不是写作.

如果你担心拼写错误,那就是复制和粘贴.

此外,即使像Komodo Edit这样便宜的IDE也可以找出如何使用长名称来完成已安装模块的代码.