导入还是不导入classmethod?

fab*_*bio 5 python python-import class-method

我希望这不是一个愚蠢的问题,但我发现他们导入的classmethod代码和一些他们没有的代码,所以有区别?

我正在使用python 3.6,但我认为最初的代码是用于python 2.7(它使用的from __builtin__ import)

import unittest
from selenium import webdriver
from builtins import classmethod #original code was from __builtin__ import classmethod 


class HomePageTest(unittest.TestCase):
    @classmethod
    def setUp(cls):
        # create a new Firefox session
        cls.driver = webdriver.Firefox()
        cls.driver.implicitly_wait(30)
        cls.driver.maximize_window()

        # navigate to the application home page
        cls.driver.get("http://demo-store.seleniumacademy.com/")

    def test_search_field(self):
        pass

    #My tests without @classmethod

    @classmethod
    def tearDown(cls):
        # close the browser window
        cls.driver.quit()

if __name__ == '__main__':
    unittest.main(verbosity=2)
Run Code Online (Sandbox Code Playgroud)

MSe*_*ert 4

通常,您只需要导入builtins,或者__builtin__代码中还有一个与内置变量同名的变量,并且还想访问内置名称。该模块的文档对此进行了很好的解释:

\n\n
\n

builtins \xe2\x80\x94 内置对象

\n\n

该模块提供对Python所有\xe2\x80\x98built-in\xe2\x80\x99标识符的直接访问;例如,builtins.open是内置函数的全名open()。有关文档,请参阅内置函数内置常量

\n\n

大多数应用程序通常不会显式访问该模块,但在提供与内置值同名的对象的模块中非常有用,但在该模块中也需要该名称的内置值。例如,在一个模块中想要实现一个open()封装了built-in的函数open(),可以直接使用这个模块:

\n\n
import builtins\n\ndef open(path):\n    f = builtins.open(path, \'r\')\n    return UpperCaser(f)\n\nclass UpperCaser:\n    \'\'\'Wrapper around a file that converts output to upper-case.\'\'\'\n\n    def __init__(self, f):\n        self._f = f\n\n    def read(self, count=-1):\n        return self._f.read(count).upper()\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

但是,在您的情况下,文件中似乎没有classmethod定义,因此您实际上并不需要from builtins import classmethod.

\n