簡體   English   中英

在Python中引用實例屬性的快捷方式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM