2015-07-05 154 views
0

假設我想創建一個具有向函數添加變量的方法的對象。例如讓我說我有obj對象。當我寫obj.create_var(「sample_variable」)時,我現在可以調用obj.sample_variable。基本上我想要一個方法,將變量的名稱作爲參數並在該對象上創建該變量。我怎麼寫這個方法?如何創建一個可以在python中創建類變量的方法?

+0

https://docs.python.org/2/library/functions.html# setattr – NightShadeQueen

+1

@ L-X儘管這是一個很好的做法,但這完全是假的。 –

+0

OMG在地球上是可能的,哇! –

回答

2
def createvar(self, name, value): 
    setattr(ClassName, name, value) 
0
class c(object): 
    def add(self, name, value): 
     # use the __class__ field 
     self.__class__.name = value 

# create two objects of the same type 
o1 = c() 
o2 = c() 

# add a class variable through the first object  
o1.add("name", "value") 

# it's correctly available in the second object too 
print o2.name 
1

可以使用setattr函數來設置使用字符串對象的屬性,你甚至不需要將其創建爲你的對象一個單獨的方法。

示例 -

class CA: 
    pass 
A() 
setattr(c,'hello2','bye2') 
c.hello2 
>>> 'bye2' 

如果你真的希望它是一個方法,你的對象,你可以使用相同的功能有作爲 -

class CA: 
    def varcreater(self, var, val): 
      setattr(self, var, val) 
c = CA() 
c.varcreater('hello','bye') 
c.hello 
>>> 'bye' 

如果你想設置類變量,然後作爲第一個參數傳遞類而不是實例,例如 -

class CA: 
    def varcreater(self, var, val): 
      setattr(CA, var, val) 
+0

我陷入了同樣的陷阱,使用'setattr' on該類不是實例。 –

+0

爲什麼上課?他想要它,比如說對嗎?他說 - obj.create_var(「sample_variable」),然後作爲obj.sample_variable訪問它,我希望obj是'對象'。 –

+0

無論如何補充說,以及答案,讓OP決定他想要的東西:) –

相關問題