假設我想創建一個具有向函數添加變量的方法的對象。例如讓我說我有obj對象。當我寫obj.create_var(「sample_variable」)時,我現在可以調用obj.sample_variable。基本上我想要一個方法,將變量的名稱作爲參數並在該對象上創建該變量。我怎麼寫這個方法?如何創建一個可以在python中創建類變量的方法?
回答
def createvar(self, name, value):
setattr(ClassName, name, value)
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
可以使用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)
我陷入了同樣的陷阱,使用'setattr' on該類不是實例。 –
爲什麼上課?他想要它,比如說對嗎?他說 - obj.create_var(「sample_variable」),然後作爲obj.sample_variable訪問它,我希望obj是'對象'。 –
無論如何補充說,以及答案,讓OP決定他想要的東西:) –
- 1. Python類:在基類的方法中創建變量子類
- 2. 如何在Python 2.7的類中創建一個變量函數?
- 3. 如何在python中創建類方法?
- 4. 如何創建一個使用javassist創建的類的變量
- 5. 創建一個可以連續更新變量的java方法
- 6. 如何在CodeIgniter的2種方法中創建一個變量?
- 7. 創建另一個變量(JSON,的getJSON方法)的可變
- 8. 如何更改此類以創建不可變的方法?
- 9. 如何創建新的BigInteger變量並創建一個返回BigInteger的方法?
- 10. 是否可以在Delphi中創建一個類型方法?
- 11. 我可以創建一個透明地顯示方法和變量的類嗎?
- 12. 創建每一層內多層Python類可以訪問變量
- 13. 在一個類中創建一個es6變量全局變量
- 14. Java - 如何創建一個可以在任何地方使用的變量?
- 15. 在Python類中,使用自身語法創建變量和創建一個變量之間有什麼區別?
- 16. 在Python中創建一個類似鎖的變量?
- 17. 如何在ES6類中創建私有變量和方法?
- 18. 在一個新類中創建一個len方法 - python
- 19. 在Python中創建一個類後添加一個方法
- 20. 我可以創建一個構造方法的對象,當我創建C#類
- 21. 如何創建一個包裝可變向量的類型?
- 22. 如何在python中創建一個不可變的字典?
- 23. 如何從創建的類中使用創建類的方法?
- 24. 如何在PHP5的子類中創建一個變量
- 25. 如何在Tensorflow中創建一個不可訓練的變量?
- 26. 我可以在Matlab中創建一個新的變量嗎?
- 27. 如何在python中創建一個可存儲樹的類
- 28. 如何創建2個創建方法?
- 29. 如何在PHP中從多個變量創建一個變量?
- 30. 如何在Python中使用變量名創建一個mysql表?
https://docs.python.org/2/library/functions.html# setattr – NightShadeQueen
@ L-X儘管這是一個很好的做法,但這完全是假的。 –
OMG在地球上是可能的,哇! –