我们有许多似乎不需要__init__的python类,将它们初始化为空是完全可以接受的,甚至是更可取的。PyLint似乎认为这是一件坏事。我是否错过了一些关于为什么没有__init__是一种不好的气味的见解?还是我应该压制这些警告并克服它? 最佳答案 你用这些类做什么?如果它们只是一组不需要维护任何状态的函数,则不需要__init__(),但将所有这些函数移入会更有意义他们自己的模块。如果它们确实保持状态(它们具有实例变量),那么您可能应该有一个__init__()以便可以初始化这些变量。即使您在创建类时从不为它们提供值,通常最好定
我们有许多似乎不需要__init__的python类,将它们初始化为空是完全可以接受的,甚至是更可取的。PyLint似乎认为这是一件坏事。我是否错过了一些关于为什么没有__init__是一种不好的气味的见解?还是我应该压制这些警告并克服它? 最佳答案 你用这些类做什么?如果它们只是一组不需要维护任何状态的函数,则不需要__init__(),但将所有这些函数移入会更有意义他们自己的模块。如果它们确实保持状态(它们具有实例变量),那么您可能应该有一个__init__()以便可以初始化这些变量。即使您在创建类时从不为它们提供值,通常最好定
我正在使用pythonflake8在python中进行PEP8检查图书馆。我的一个子模块的__init__.py文件中有一个导入语句,如下所示:from.my_classimportMyClass我在初始化文件中有这一行的原因是我可以从子模块中导入MyClass作为fromsomemoduleimportMyClass而不必编写fromsomemodule.my_classimport我的类(class).我想知道是否可以在纠正PEP8违规的同时保持此功能? 最佳答案 这实际上不是PEP8违规。我只是这样做:from.my_clas
我正在使用pythonflake8在python中进行PEP8检查图书馆。我的一个子模块的__init__.py文件中有一个导入语句,如下所示:from.my_classimportMyClass我在初始化文件中有这一行的原因是我可以从子模块中导入MyClass作为fromsomemoduleimportMyClass而不必编写fromsomemodule.my_classimport我的类(class).我想知道是否可以在纠正PEP8违规的同时保持此功能? 最佳答案 这实际上不是PEP8违规。我只是这样做:from.my_clas
据我了解,上下文管理器的__init__()和__enter__()方法只被调用一次,一个接一个,没有任何机会其他要在两者之间执行的代码。将它们分成两种方法的目的是什么,我应该在每种方法中放入什么?编辑:抱歉,没有关注文档。编辑2:实际上,我感到困惑的原因是因为我在考虑@contextmanager装饰器。使用@contextmananger创建的上下文管理器只能使用一次(第一次使用后生成器会耗尽),因此通常使用with语句中的构造函数调用编写它们;如果这是使用with语句的唯一方法,那么我的问题将是有道理的。当然,实际上,上下文管理器比@contextmanager可以创建的更通用;
据我了解,上下文管理器的__init__()和__enter__()方法只被调用一次,一个接一个,没有任何机会其他要在两者之间执行的代码。将它们分成两种方法的目的是什么,我应该在每种方法中放入什么?编辑:抱歉,没有关注文档。编辑2:实际上,我感到困惑的原因是因为我在考虑@contextmanager装饰器。使用@contextmananger创建的上下文管理器只能使用一次(第一次使用后生成器会耗尽),因此通常使用with语句中的构造函数调用编写它们;如果这是使用with语句的唯一方法,那么我的问题将是有道理的。当然,实际上,上下文管理器比@contextmanager可以创建的更通用;
我有一个类,我希望将其属性转换为property,但该属性是在__init__中设置的。不知道应该怎么做。无需在__init__中设置属性,这很容易并且效果很好importdatetimeclassSTransaction(object):"""Astatementtransaction"""def__init__(self):self._date=None@propertydefdate(self):returnself._date@date.setterdefdate(self,value):d=datetime.datetime.strptime(value,"%d-%b-%y"
我有一个类,我希望将其属性转换为property,但该属性是在__init__中设置的。不知道应该怎么做。无需在__init__中设置属性,这很容易并且效果很好importdatetimeclassSTransaction(object):"""Astatementtransaction"""def__init__(self):self._date=None@propertydefdate(self):returnself._date@date.setterdefdate(self,value):d=datetime.datetime.strptime(value,"%d-%b-%y"
我知道关于__init__.py和__main__.py的这两个问题:Whatis__init__.pyfor?Whatis__main__.py?但我真的不明白它们之间的区别。或者我可以说我不明白它们是如何相互作用的。 最佳答案 __init__.py在您将包导入到正在运行的python程序中时运行。例如,importidlelib在程序中运行idlelib/__init__.py,它不做任何事情,因为它的唯一目的是将idlelib目录标记为一个包。另一方面,tkinter/__init__.py包含大部分tkinter代码并定义
我知道关于__init__.py和__main__.py的这两个问题:Whatis__init__.pyfor?Whatis__main__.py?但我真的不明白它们之间的区别。或者我可以说我不明白它们是如何相互作用的。 最佳答案 __init__.py在您将包导入到正在运行的python程序中时运行。例如,importidlelib在程序中运行idlelib/__init__.py,它不做任何事情,因为它的唯一目的是将idlelib目录标记为一个包。另一方面,tkinter/__init__.py包含大部分tkinter代码并定义