类'实例作为参数python

时间:2013-07-15 07:12:39

标签: python class methods arguments

我正在搜索一个类方法,该方法决定在将类的实例作为参数给出时将给出哪些参数。

我有这个:

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中的相似内容吗?

1 个答案:

答案 0 :(得分:1)

你想要的是不可能的。当你打电话时没有办法说出来

foo(Answers_Matrix())

foo实际上会收到来自Answers_Matrix()的其他内容。这是有充分理由的,因为它会令人难以置信地混淆并难以实施。特别是,您很可能希望使用self作为假设__asargument__方法中某些内容的参数,并且这会导致无限递归或极其混乱的上下文敏感语义__asargument__已被或不被召唤。

如果您希望在尝试将对象A用于任何对象时将对象A替换为对象B,则首先不要使用对象A.只需使用对象B.