如何从 Python3 中的列表中调用我自己的方法?
How to call my own method from a list in Python3?
我正在尝试制作一个机器代码解释器,其中,为了效率,我想在代码和模拟其功能的函数之间使用直接关系。正如我想象的那样,我会将模拟函数放入一个索引列表中,并调用适当的函数按机器代码字节对列表进行索引。
我的问题是,我不知道如何为我的 class 的内部方法编写列表成员的措辞(它对“self.”和“myclass.”前缀都不起作用).下面的示例代码显示了我的问题:在 functions[] 列表中,我将列出那些方法,我想将其与列表的索引连接起来。
请给我建议,Python 3.
中最好的(希望是执行速度最快的)解决方案是什么
class myclass:
values = [101, 102, 103, 104,105, 106, 107, 108]
functions = [getval, getnextval, getprevval]
def __init__(self):
pass
def getval(self, index):
return self.values[index]
def getnextval(self, index):
return self.values[index + 1]
def getprevval(self, index):
return self.values[index - 1]
def getfuncval(self, func, index):
return(self.functions[func](index))
myobj = myclass()
print(myobj.getval(0)) # -> 101
print(myobj.getnextval(1)) # -> 103
print(myobj.getfuncval(2, 3)) # would need to get result from getprevval(3) -> 103
您没有将任何值分配给 values
和 functions
变量到 self 对象中,也许这段代码就是解决方案:
class myclass:
def __init__(self):
self.values = [101, 102, 103, 104,105, 106, 107, 108]
self.functions = [self.getval, self.getnextval, self.getprevval]
def getval(self, index):
return self.values[index]
def getnextval(self, index):
return self.values[index + 1]
def getprevval(self, index):
return self.values[index - 1]
def getfuncval(self, func, index):
return(self.functions[func](index))
myobj = myclass()
print(myobj.getval(0)) # -> 101
print(myobj.getnextval(1)) # -> 103
print(myobj.getfuncval(2, 3))
您可以将 functions
的定义移动到 __init__
。
def __init__(self):
self.functions = [self.getval, self.getnextval, self.getprevval]
还有一些其他选项,例如使用类方法。 (因为您的方法似乎不依赖于特定 myclass
实例 的任何内部状态。)
我正在尝试制作一个机器代码解释器,其中,为了效率,我想在代码和模拟其功能的函数之间使用直接关系。正如我想象的那样,我会将模拟函数放入一个索引列表中,并调用适当的函数按机器代码字节对列表进行索引。 我的问题是,我不知道如何为我的 class 的内部方法编写列表成员的措辞(它对“self.”和“myclass.”前缀都不起作用).下面的示例代码显示了我的问题:在 functions[] 列表中,我将列出那些方法,我想将其与列表的索引连接起来。 请给我建议,Python 3.
中最好的(希望是执行速度最快的)解决方案是什么class myclass:
values = [101, 102, 103, 104,105, 106, 107, 108]
functions = [getval, getnextval, getprevval]
def __init__(self):
pass
def getval(self, index):
return self.values[index]
def getnextval(self, index):
return self.values[index + 1]
def getprevval(self, index):
return self.values[index - 1]
def getfuncval(self, func, index):
return(self.functions[func](index))
myobj = myclass()
print(myobj.getval(0)) # -> 101
print(myobj.getnextval(1)) # -> 103
print(myobj.getfuncval(2, 3)) # would need to get result from getprevval(3) -> 103
您没有将任何值分配给 values
和 functions
变量到 self 对象中,也许这段代码就是解决方案:
class myclass:
def __init__(self):
self.values = [101, 102, 103, 104,105, 106, 107, 108]
self.functions = [self.getval, self.getnextval, self.getprevval]
def getval(self, index):
return self.values[index]
def getnextval(self, index):
return self.values[index + 1]
def getprevval(self, index):
return self.values[index - 1]
def getfuncval(self, func, index):
return(self.functions[func](index))
myobj = myclass()
print(myobj.getval(0)) # -> 101
print(myobj.getnextval(1)) # -> 103
print(myobj.getfuncval(2, 3))
您可以将 functions
的定义移动到 __init__
。
def __init__(self):
self.functions = [self.getval, self.getnextval, self.getprevval]
还有一些其他选项,例如使用类方法。 (因为您的方法似乎不依赖于特定 myclass
实例 的任何内部状态。)