使用方法从另一个属性创建属性
Create attribute from another attribute with a method
我有一个包含 .txt 文件的文件夹,我想创建一个对象列表,其中每个对象都有 3 个属性(文件、名称、文本)。 'name' 只是没有“.txt”扩展名的文件名。 'text is the content of the file'
我卡住了,这就是我到目前为止所做的。
class My_class():
def __init__(self, file):
self.file = file
self.name = file.split('.')[0]
def get_text(self):
folder_file = folder + '\' + self.file
with open(folder_file, 'r') as f:
text = f.read()
return text
folder = r'<the folder path that contains the .txt files>'
list_of_files = [file for file in os.listdir(folder) if file.find('.txt') != -1]
objects = [My_class(f) for f in list_of_files]
[print(obj.file) for obj in objects]
[print(obj.name) for obj in objects]
我想创建一个名为 get_text 的方法,并在代码中执行它,因此它会为每个名为文本的对象创建一个新属性。
调用该方法后,我希望能够执行以下命令并打印出文件的内容。
[print(obj.text) for obj in objects]
您可以让 get_text
方法设置对象的属性:
def get_text(self):
folder_file = f"{folder}\{self.file}"
with open(folder_file, 'r') as f:
self.text = f.read()
在这种情况下,不需要 return
值。如果您选择这样做,那么在 __init__
方法中定义 text
属性并将其设置为等于 None
通常是一种很好的做法。这使您在稍后返回时更容易看到对象使用的属性(并且您已经忘记了您做了什么),并且还使执行检索检查变得简单,就像您只想要的情况一样收集您已为其检索文本的对象:
[obj.text for obj in objects if obj.text is not None]
或者,您可以在 __init__
方法中定义 self.text
,方法是将其设置为等于方法调用 self.get_text()
。这意味着在初始化对象时会自动检索文本。在这种情况下,您应该保持 get_text
定义的原样——即让它创建一个局部变量 text
然后 return 该变量。这就是它的样子:
class My_class():
def __init__(self, file):
self.file = file
self.name = file.split('.')[0]
self.text = self.get_text()
我有一个包含 .txt 文件的文件夹,我想创建一个对象列表,其中每个对象都有 3 个属性(文件、名称、文本)。 'name' 只是没有“.txt”扩展名的文件名。 'text is the content of the file'
我卡住了,这就是我到目前为止所做的。
class My_class():
def __init__(self, file):
self.file = file
self.name = file.split('.')[0]
def get_text(self):
folder_file = folder + '\' + self.file
with open(folder_file, 'r') as f:
text = f.read()
return text
folder = r'<the folder path that contains the .txt files>'
list_of_files = [file for file in os.listdir(folder) if file.find('.txt') != -1]
objects = [My_class(f) for f in list_of_files]
[print(obj.file) for obj in objects]
[print(obj.name) for obj in objects]
我想创建一个名为 get_text 的方法,并在代码中执行它,因此它会为每个名为文本的对象创建一个新属性。
调用该方法后,我希望能够执行以下命令并打印出文件的内容。
[print(obj.text) for obj in objects]
您可以让 get_text
方法设置对象的属性:
def get_text(self):
folder_file = f"{folder}\{self.file}"
with open(folder_file, 'r') as f:
self.text = f.read()
在这种情况下,不需要 return
值。如果您选择这样做,那么在 __init__
方法中定义 text
属性并将其设置为等于 None
通常是一种很好的做法。这使您在稍后返回时更容易看到对象使用的属性(并且您已经忘记了您做了什么),并且还使执行检索检查变得简单,就像您只想要的情况一样收集您已为其检索文本的对象:
[obj.text for obj in objects if obj.text is not None]
或者,您可以在 __init__
方法中定义 self.text
,方法是将其设置为等于方法调用 self.get_text()
。这意味着在初始化对象时会自动检索文本。在这种情况下,您应该保持 get_text
定义的原样——即让它创建一个局部变量 text
然后 return 该变量。这就是它的样子:
class My_class():
def __init__(self, file):
self.file = file
self.name = file.split('.')[0]
self.text = self.get_text()