python3模块导入/命名困境

时间:2018-04-25 19:44:18

标签: python python-3.x naming-conventions python-module

我刚刚完成了一个小型的all-python3 gpio模块,用于Linux gpiolib。我玩弄了两种不同的方法来命名和导入客户端的东西:

1

gpio.py

class GPIOInput(object):
    ...

class GPIOEvent(object):
    ...

class GPIOOutput(object):
    ...

client.py

from gpio import GPIOEvent, GPIOOutput, GPIOInput

irq = GPIOEvent(1, 14)

2

gpio.py

class Input(object):
    ...

class Event(object):
    ...

class Output(object):
    ...

client.py

import gpio

irq = gpio.Event(1, 14)

问题:是否有一个好的/具体的理由选择一个而不是另一个?或者只是偏好?

没有(对我来说)真正的快乐混合体。我喜欢在模块内部作用域时的短名称,但如果在模块外部使用,则确实需要模块名称来限定它们的含义。但是导入gpio,然后引用gpio.GPIOOutput似乎是多余的。

1 个答案:

答案 0 :(得分:5)

PEP8主张gpio.Input()等等。

  

还有使用短唯一前缀将相关名称组合在一起的风格。这在Python中用得不多,......

     

在Python中,这种样式通常被认为是不必要的,因为属性和方法名称以对象为前缀,函数名称以模块名称为前缀。