2017-08-25 36 views
0

所以說我有這個類:Python - 如何獲得類中的所有靜態變量?

class Person: 
    first_name = 'First Name' 
    last_name = 'Last Name' 
    phone_number = '000-000' 

我想要做的是讓first_namelast_namephone_number,在正確的順序。
謝謝。

+0

你到目前爲止嘗試過什麼? – DhKo

+0

所以,你可以使用*'vars(Person)'來訪問屬於一個類的*成員。但是,你會發現這包括*所有成員*,所以像方法這樣的東西是類中的成員,其他特殊的東西也是'__doc__'和'__dict__'。所以,過濾'vars(Person)',也許對於那些不是'startswith('_')'的東西,也許是不可調用的東西(...)' –

+0

另外,希望你沒有實際類中的'first_name','last_name'和'phone_number'類變量 - 它們應該是實例變量。 –

回答

-1

你可以試試這個:

class Person: 
    first_name = 'First Name' 
    last_name = 'Last Name' 
    phone_number = '000-000' 

data = [i for i in vars(Person) if not i.startswith("__") and not i.endswith("__")] 

new_val = data[::-1] 

輸出:

['first_name', 'last_name', 'phone_number'] 
+0

這也會給你方法。 –

-3

不能從外部訪問的變量,如果它不是在self.yourVariableName = '東西'。爲了使其工作,並能夠從外面通過以下方式訪問變量,改變程序:

class Person(): 
    def __init__(self): 
     self.first_name = "First Name" 
     self.last_name = "Last Name" 
     self.phone_number = "000-000" 

現在,如果你做同樣的文件中的以下內容:

person1 = Person() 
print(person1.first_name) 
print(person1.last_name) 
print(person1.phone_number) 

這應打印在控制檯:

First Name 
Last Name 
000-000 

你也可以這樣做:

person1 = Person() 
print(person1.first_name) 
print(person1.last_name) 
print(person1.phone_number) 
+1

這不是回答這個問題,此外,它只是*不正確*。你可以通過'ClassName.class_member'從外部訪問類級別的變量。 –

+0

對不起,這是事實,你可以按照你說的方式來做,但我寫的方式也是正確的 – PlanetGazer8360

+0

但是它是完全的與實際問題無關...... OP要求*字段的名稱*而不是字段本身。 –