![](/img/trans.png)
[英]What's the proper way to initialize instance attributes that refer to files?
[英]Shorthand way to refer to instance attributes in Python
我有一個Python類,其中包含許多變量,大致如下:
class file:
def __init__(self, name)
self.name = name
self.size = None
self.num_lines = None
self.directory = None
創建實例后,必須為這些變量分配值:
f = file("abc.txt")
f.size = get_file_info(f.name)
f.num_lines = count_lines(f.name)
f.directory = get_dir(f.name)
f.new_name = root + f.directory + f.name + f.size
我真正想要的是using關鍵字的語法糖:
f = file("abc.txt")
using f:
size = get_file_info(name)
num_lines = count_lines(name)
directory = get_dir(name)
new_name = root + directory + name + size
也就是說,我想提供一個新的上下文,在該上下文中,將在Python執行所有其余搜索之前首先搜索變量。
有沒有這樣的東西? 如果沒有,這似乎是對該語言的有用補充。
編輯:根據答案,我故意不想在init函數中執行此操作。 由於個人原因。 並非如此-在我的用例中這沒有意義
您要放入using
塊中的所有代碼都應由類的__init__
方法處理。
class File:
def __init__(self, name)
self.name = name
self.size = get_file_info(name)
self.num_lines = count_lines(name)
self.directory = get_dir(name)
self.new_name = os.path.join(root, self.directory, self.name, self.fize)
f = File("abc.txt")
您暗示的某些函數( get_file_info
等)可能更適合作為File
類的方法,而不是將文件名作為參數的獨立函數。
語言對此沒有支持。 您只能按功能和模塊創建變量名稱空間。 甚至沒有類(這就是為什么,即使在類內部,也必須使用self
來引用其屬性)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.