我是編程和自學的新手。我已經使用Stack Exchange來查找許多問題的答案,而無需詢問(這是一個很好的社區),但我似乎無法在任何地方找到答案。如果這是重複的,我很抱歉。如何在Python中將對類/函數的調用轉換爲字符串?
我想分配一個方法給一個變量,但我想將它保存到一個文本文件以供以後訪問。我使用open()來訪問文本文件,並在加載信息時使用eval()從字符串中對其進行更改。我無法弄清楚如何做相反的事情。
from random import randint
class Example (object):
def __init__(self):
self.name = ""
self.lucky_number = ""
def create_person(self):
self.name = input("What is your name?")
self.lucky_number = randint(1,10)
save_person = [self.name, self.lucky_number]
with open("example.txt", "w") as f:
for i in save_person:
f.write(i + '\n')
def load_person(self):
with open("example.txt", 'r') as f:
person_list = f.readlines()
if len(person_list) <= 1:
create_person()
else:
self.name = person_list[0].strip('\n')
self.lucky_number = eval(person_list[1].strip('\n'))
person = Example()
person.load_person()
我想保持randint(1,10)的一部分,因爲我希望重用的功能,但我可以將值改爲別的東西以後根據用戶的選擇(如改變self.lucky_number = randint (1,10)到self.lucky_number = randint(1,30))。
我知道我可以將其更改爲self.lucky_number = randint(1,var),然後保存var的值,但它讓我懷疑如果我嘗試的方式是可能的。
在此先感謝您的幫助。我正在使用Python 3.5。
編輯:爲了澄清,我正在尋找在文本文件中存儲實際函數,即randint(1,10),而不是函數的值。
編輯2:我將關閉這個答案,因爲我找到了一種方法來做我所需要的,但它不是一個直接的方法。
我想你可能想看看「在python中對象的序列化」。這可以讓您存儲對象並在稍後加載它們。 https://docs.python.org/3.5/library/pickle.html – user49438
謝謝。我剛剛查看了你發佈的鏈接,這是我非常感興趣的事情。與此同時,我在我的Pi3上的Python 3.5和我的手機上的Pythonista之間彈跳,現在更容易檢查txt文件以確保每一步都正確寫入,並且我可以快速更改值以測試新增加的內容。下一步是弄清楚如何讓人們無法讀懂它,而且你感謝地指引我朝着正確的方向前進。謝謝! :)在此期間,更容易看到randint(1,10)將其改爲10以上。可能嗎? –
所以你想要存儲函數調用('randint')*,包括它的參數*('1'和'10')?在這一點上,我不太瞭解需要存儲它,因爲它既不是用戶輸入(如名稱)也不是隨機確定的值(因爲您不再存儲該值,而是函數名稱和它的參數)。 –