我正在搜索一个类方法,该方法决定在将类的实例作为参数给出时将给出哪些参数。
我有这个:
class Answers_Matrix(list):
def __setitem__(self, index, value):
if (type(value) is int):
if (0 <= value <= 255):
list.__setitem__(self, index, value)
else:
print "Invalid value size."
else:
print "Invalid value type. Value must be an integer."
def __repr__(self):
# a function I made which returns a matrix in a string format
return _matrix_to_string(self)
# **EDIT:**
# here I want a __asargument__ or something alike, so when an instance
# of this class is given as an argument I can decide what and how it
# will be given.
# Example:
# def __asargument__(self):
# array = (ctypes.c_ubyte*len(self))(*self)
# return array
我可以使用python中的相似内容吗?
答案 0 :(得分:1)
你想要的是不可能的。当你打电话时没有办法说出来
foo(Answers_Matrix())
foo
实际上会收到来自Answers_Matrix()
的其他内容。这是有充分理由的,因为它会令人难以置信地混淆并难以实施。特别是,您很可能希望使用self
作为假设__asargument__
方法中某些内容的参数,并且这会导致无限递归或极其混乱的上下文敏感语义__asargument__
已被或不被召唤。
如果您希望在尝试将对象A用于任何对象时将对象A替换为对象B,则首先不要使用对象A.只需使用对象B.