2017-06-14 44 views
0

我該如何更換eval?我用它我該如何取代eval?

class vahicle(): 
    def move(class): 
     cl = eval(class) 
     # i need to use car as class here 
class car(vehicle): 
    def __init__(self): 
      pass 
    def movement(): 
     name = self.class.name 
     move(self, name) 
+0

在Python中,你可以直接傳遞類和函數,你不需要傳遞函數的名稱和eval。 – syntonym

+1

無論如何,你想達到什麼目的?爲什麼'car.movement'將它自己的類名作爲參數調用'vehicle.move'?做這件事可能會有更好更完全不同的方式。 –

回答

1
class Vehicle(): 

    def move(self, cls): 
     return cls() 

class Car(Vehicle): 

    def movement(self): 
     return self.move(self.__class__) 

c = Car() 
print c.movement() 
0

因爲它已經回答了你的任務使用類的方法和傳遞類對象給它閱讀了大量的相關信息不愉快的經歷。

如果在python中詢問替代eval(),因爲它不安全,您可以使用ast.literal_eval()來代替。