【发布时间】:2017-11-22 16:36:48
【问题描述】:
这是我在文件files.py中的类:
class Files():
def __init__(self, *, kwargs1=None, ......, kwargsx=None):
self.kwargs1 = kwargs1
...................
...................
...................
self.kwargsx = kwargsx
__validate()
if self.kwargs1 == "create":
self.__create()
if kwargsx == "remove":
self.__remove()
def __validate():
validate attributes of object and raise execption if fails
def __create(self):
create file
def __remove(self):
remove file
在另一个文件tasks.py我有这个:
from files import File
File(kwargs1="create", kwargs2="path/to/destination1", kwargs3="/path/to/source1",..........)
File(kwargs1="create", kwargs2="path/to/destination2", kwargs3="/path/to/source2",..........)
目前的情况是每个对象都得到验证,然后继续使用__create() 或__remove()。我要问的是是否可以先验证所有对象然后继续。
我可以在tasks.py 中实现它。我必须将私有方法 __create() 和 __remove() 声明为公共方法 create(self) 和 remove(self),并且类看起来像这样:
class Files():
def __init__(self, *, kwargs1=None, ......, kwargsx=None):
self.kwargs1 = kwargs1
...................
...................
...................
self.kwargsx = kwargsx
__validate()
def __validate():
validate attributes of object and raise execption if fails
def create(self):
create file
def remove(self):
remove file
还有tasks.py:
files = []
try:
files.append(File(kwargs1="create", kwargs2="path/to/destination1", kwargs3="/path/to/source1",..........))
files.append(File(kwargs1="create", kwargs2="path/to/destination2", kwargs3="/path/to/source2",..........))
except ValueError as e:
print(e)
else:
for item in files:
if item.kwargsx == "create":
create(item)
elif item.kwargsx == "remove":
remove(item)
我的问题是是否可以在类文件本身中实现这个逻辑?我能想到的唯一方法是检查堆栈并迭代每个对象初始化,但我不知道它是否可行!
【问题讨论】:
标签: python-3.x class object instance