2013-07-15 96 views
-2

我正在尋找一個類方法,它決定當給出一個類的實例作爲參數時將會給出哪些參數。類的實例作爲參數python

我有這樣的:

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

不明白你的問題。請描述更清楚或更好的例子。 – zhangyangyu

+1

類,或該類的對象? – cdarke

回答

1

你想要什麼是不可能的。有沒有辦法說,當你調用

foo(Answers_Matrix()) 

foo將實際收到Answers_Matrix()衍生一些其他的事情。這是有充分的理由的,因爲它會令人難以置信的困惑和難以實施。尤其是,您很可能希望將self用作假設的__asargument__方法中的某個參數,並且這會導致無限遞歸或對於__asargument__處於或未被調用時極其混亂的上下文敏感語義。

如果您希望將對象A替換爲對象B,只要您嘗試將其用於任何對象,則首先不要有對象A.只是使用對象B.