2013-12-21 2 views
0

Я сделал и пример кода здесь, чтобы показать, что я хочу сделать, чтобы получить:Получить атрибут непосредственно из вызова функции. Python 3.x

import random 
class myclass: 
    def __init__(self,example): 
     self.example=example 


listexample = ["1","2","3","4","5"] 

objlist = [] 
for i in listexample: 

    objlist.append(myclass(i)) 


#Ok so here I got a list of objects 



def examplefunction(listex, myproblem): 


    randomnumber = random.randrange(0,5) 
    print(listex[randomnumber].example) # This works, of course 
    print(listex[randomnumber].myproblem) # here, myproblem should be "example" and print one of my numbers. 


examplefunction(objlist,"example") # here.. I want this to get the attribute of the class 

Мне просто нужно знать, если это выполнимо, и примерно как? Не знаю, пытаюсь ли я сделать что-то, что просто неправильно, но если это можно было бы сделать, это было бы хорошим решением для меня. Может быть, попытайтесь направить меня к правильной части текста, которая может объяснить?

+0

К сожалению, Ваш вопрос не ясен. Что вы должны сделать для 'print (listex [randomnumber] .myproblem)'? –

+0

Я хочу, чтобы он печатал атрибут класса, который делает listex [randomnumer] .example. – Boidae

+0

Это то, что делает ваша предыдущая строка. Вы хотите напечатать * имя *? Или вы хотите напечатать * все * атрибуты, доступные на 'listex [randomnumber]', динамически? –

ответ

1

Вы можете получить доступ к свойству динамически с помощью getattr:

class myclass: 
    def __init__ (self, example): 
     self.example = example 

x = myclass('foo') 
print(getattr(x, 'example')) # foo 

Так как в вашем examplefunction бы это:

print(getattr(listex[randomnumber], myproblem)) 
+0

Хорошо, это работает. Очень хорошее первое впечатление от сообщества этого сайта. Ура! – Boidae

+0

Добро пожаловать! Не забудьте [принять] (http://meta.stackexchange.com/a/5235/141542) ответ, если он решил вашу проблему, чтобы пометить вопрос как решаемый :) – poke

Смежные вопросы