python abstractmethods:将列表附加到 abstractmethod 的子类
python abstractmethods: appending a list to a subclass from abstractmethod
我正在尝试熟悉抽象 classes,但不知道如何追加到 class 中的空列表。这是我正在使用的目录的样子:
my_dir
|__data
| |__colors
| | |__light_colors.csv
| | |__dark_colors.csv
| | |__cold_colors.json
| |__ages
|__code
|__data_reader.py
|__config.py
在我的配置文件中我有:
import os
REPO_ROOT_DIRECTORY = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
colors_DATA_DIRECTORY = os.path.join(REPO_ROOT_DIRECTORY, "data")
在我的 data_reader.py 文件中,我有以下代码,它是一个抽象的 class。
from abc import ABC, abstractmethod
from config import colors_DATA_DIRECTORY
import os
class PathReader(ABC):
@abstractmethod
def read_data_type(self): pass
class colorReader(PathReader):
def __init__(self):
self.path_to_types = os.path.join(colors_DATA_DIRECTORY, 'colors')
colors= []
def read_data_type(self):
for files in os.listdir(self.path_to_types):
colors.append(os.path.join(self.path_to_types, files))
g= colorReader()
print(g.read_data_type())
然而,列表 colors=[] 似乎是空的,理想情况下我想在另一个摘要中使用这个列表 class 所以,我可以检查存储在列表中的文件的扩展名,所以data_reader.py 中的代码就是这样继续的。
class ExtensionReader(ABC):
@abstractmethod
def file_extension_reader(self): pass
class csvFileExtension(ExtensionReader):
def __init__(self, file_type: PathReader):
self.file_type = file_type
def file_extension_reader(self):
for files in self.file_type:
if files.split(".")[1] == 'csv':
print(files)
但这是我不知道如何使用颜色 =[] 列表来检查以 .csv
结尾的文件的扩展名的地方
这与摘要无关类。你忘了让你的 colors
变量成为 self
:
的属性
from abc import ABC, abstractmethod
from config import colors_DATA_DIRECTORY
import os
class PathReader(ABC):
@abstractmethod
def read_data_type(self): pass
class colorReader(PathReader):
def __init__(self):
self.path_to_types = os.path.join(colors_DATA_DIRECTORY, 'colors')
self.colors= []
def read_data_type(self):
for files in os.listdir(self.path_to_types):
self.colors.append(os.path.join(self.path_to_types, files))
g= colorReader()
print(g.read_data_type())
我正在尝试熟悉抽象 classes,但不知道如何追加到 class 中的空列表。这是我正在使用的目录的样子:
my_dir
|__data
| |__colors
| | |__light_colors.csv
| | |__dark_colors.csv
| | |__cold_colors.json
| |__ages
|__code
|__data_reader.py
|__config.py
在我的配置文件中我有:
import os
REPO_ROOT_DIRECTORY = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
colors_DATA_DIRECTORY = os.path.join(REPO_ROOT_DIRECTORY, "data")
在我的 data_reader.py 文件中,我有以下代码,它是一个抽象的 class。
from abc import ABC, abstractmethod
from config import colors_DATA_DIRECTORY
import os
class PathReader(ABC):
@abstractmethod
def read_data_type(self): pass
class colorReader(PathReader):
def __init__(self):
self.path_to_types = os.path.join(colors_DATA_DIRECTORY, 'colors')
colors= []
def read_data_type(self):
for files in os.listdir(self.path_to_types):
colors.append(os.path.join(self.path_to_types, files))
g= colorReader()
print(g.read_data_type())
然而,列表 colors=[] 似乎是空的,理想情况下我想在另一个摘要中使用这个列表 class 所以,我可以检查存储在列表中的文件的扩展名,所以data_reader.py 中的代码就是这样继续的。
class ExtensionReader(ABC):
@abstractmethod
def file_extension_reader(self): pass
class csvFileExtension(ExtensionReader):
def __init__(self, file_type: PathReader):
self.file_type = file_type
def file_extension_reader(self):
for files in self.file_type:
if files.split(".")[1] == 'csv':
print(files)
但这是我不知道如何使用颜色 =[] 列表来检查以 .csv
结尾的文件的扩展名的地方这与摘要无关类。你忘了让你的 colors
变量成为 self
:
from abc import ABC, abstractmethod
from config import colors_DATA_DIRECTORY
import os
class PathReader(ABC):
@abstractmethod
def read_data_type(self): pass
class colorReader(PathReader):
def __init__(self):
self.path_to_types = os.path.join(colors_DATA_DIRECTORY, 'colors')
self.colors= []
def read_data_type(self):
for files in os.listdir(self.path_to_types):
self.colors.append(os.path.join(self.path_to_types, files))
g= colorReader()
print(g.read_data_type())