2017-06-14 26 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では、クラスと関数を直接渡すことができます。関数名と評価を渡す必要はありません。 – 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

を使用して悪い経験に関する多くの情報を読んでいました。

eval()の代わりにpythonでセキュアでないことがある場合は、ast.literal_eval()を代わりに使用できます。

関連する問題