【发布时间】:2013-04-16 15:17:32
【问题描述】:
在 python 中,写一个__init__ 定义是不是很糟糕:
class someFileType(object):
def __init__(self, path):
self.path = path
self.filename = self.getFilename()
self.client = self.getClient()
self.date = self.getDate()
self.title = self.getTitle()
self.filetype = self.getFiletype()
def getFilename(self):
'''Returns entire file name without extension'''
filename = os.path.basename(self.path)
filename = os.path.splitext(filename)
filename = filename[0]
return filename
def getClient(self):
'''Returns client name associated with file'''
client = self.filename.split()
client = client[1] # Assuming filename is formatted "date client - docTitle"
return client
初始化变量在哪里调用返回字符串的函数?或者它被认为是惰性编码?主要是为了避免我在想引用文件的某些方面时将something.filetype 写成something.getFiletype()。
此代码是按客户端、然后按文档类型以及基于文件名中的数据的其他操作将文件分类到文件夹中。
【问题讨论】:
-
完全没问题。甚至更容易阅读。
-
对我来说看起来不错,除非您的 getFoo() 函数之一碰巧需要很长时间,在这种情况下,您可能希望将其推迟到实际需要时。
-
我更喜欢缓存@property。
-
@MartijnPieters 关心发布这是作为答案吗?
-
@freakish 这就是 OP 代码的作用。