Python 处理进口的更好方法是什么*

Python 处理进口的更好方法是什么*,python,python-2.7,Python,Python 2.7,因此,我有一个类,它看起来如下所示: class TestClass(): from somewhere import * def test_function(self): pass 当然,我得到了一个关于只允许在模块级别导入*的语法警告。我看到的所有帖子都是关于为什么这是一个坏主意,而实际上并没有提供一种更好的处理方法。我们正在考虑迁移到Python3,在迁移之前需要将此作为我们的一个障碍 那么,有什么更好的方法来处理这个问题呢?将导入语句放入\uuuu i

因此,我有一个类,它看起来如下所示:

class TestClass():
    from somewhere import *

    def test_function(self):
        pass
当然,我得到了一个关于只允许在模块级别导入*的语法警告。我看到的所有帖子都是关于为什么这是一个坏主意,而实际上并没有提供一种更好的处理方法。我们正在考虑迁移到Python3,在迁移之前需要将此作为我们的一个障碍


那么,有什么更好的方法来处理这个问题呢?将导入语句放入
\uuuu init\uuuuu.py
是处理此问题的方法吗?如果是,,那会是什么样子?

更好的方法是导入一些东西,然后使用
一些你想要调用的函数,而不是
你想要调用的函数。

更好的方法是导入一些东西,然后使用
一些东西。你想要调用的函数,而不是
function\u要调用的

如果需要将
某处的所有元素添加为类的元素,可以使用循环以及和的组合:

这将从
某处
TestClass
添加与
从某处导入*
语句完全相同的名称;如果设置了
\uuuu all\uuu
序列中列出的所有名称,否则所有不以下划线开头的名称

与导入单个属性(函数等)不同,您应该在
某处创建一个基类,而不是:

class BaseSomewhere:
    somewhere_thing1 = 'something'

    def somewhere_thing2(self):
        # do something
然后导入:


如果需要将
某处的所有元素添加为类的元素,则可以使用循环和与的组合:

这将从
某处
TestClass
添加与
从某处导入*
语句完全相同的名称;如果设置了
\uuuu all\uuu
序列中列出的所有名称,否则所有不以下划线开头的名称

与导入单个属性(函数等)不同,您应该在
某处创建一个基类,而不是:

class BaseSomewhere:
    somewhere_thing1 = 'something'

    def somewhere_thing2(self):
        # do something
然后导入:


正在从某个地方导入多少对象?“正确”的方法是只从需要导入的
某处显式列出对象,或者只从某处导入
并使用
某处。object
而不是
对象
。为什么要从某处导入
而不是
导入某处
?后者不会污染名称空间,通常应优先于前者。有多少对象是从
某处导入的?“正确”的方法是只从需要导入的
某处显式列出对象,或者只从某处导入
并使用
某处。object
而不是
对象
。为什么要从某处导入
而不是
导入某处
?后者不会污染名称空间,通常应优先于前者。我同意这是更好的方法,当您可能有数千个函数要调用时会发生什么?我同意这是更好的方法,当您可能有数千个函数要调用时会发生什么情况?但更好的设计模式是在某处创建一个明确定义了所有这些方法的
.DummyClass
,然后执行
类TestClass(某处.DummyClass)
@AdamSmith:绝对同意;我也会写出来的。非常感谢你。这非常有用。但更好的设计模式是创建一个明确定义了所有这些方法的
某处.DummyClass
,然后执行
类TestClass(某处.DummyClass)
@AdamSmith:绝对同意;我也会写出来的。非常感谢你。这非常有帮助。
import somewhere

class TestClass(somewhere.BaseSomewhere):
    def test_function(self):
        pass