Python, кроме TypeError, при вызове экземпляра без возможности сборки - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть функция, которая принимает в качестве параметра экземпляр класса или объект класса.В зависимости от того, получил он экземпляр или только сам класс, он должен выполнять разные задачи.Моя идея была такой:

def foo(self, object):
   try:
       object = object()
       from_object = True
   except TypeError:
       if isinstance(object, BaseObject):
          #object is already an instance
          from_object = False
       else:
          raise TypeError("Not a correct object / instance")

  ...do stuff

, но когда я запускаю этот код, например, с строкой в ​​качестве экземпляра объекта, я все равно получаю

TypeError: 'str' object is not callable

Так что предложение try кроме не перехватывает его,Любые идеи?

Редактировать:

Это был просто MME, мой метод -

def convert(self, newunit):
    """Converts a instance of a given unit to a new
    unit. Returns a new instance of the converted unit"""
    try:
        newunit = newunit()
        from_baseunit = True
    except TypeError:
        if isinstance(newunit, BaseUnit):
            from_baseunit = False
        else:
            raise

, а полный возврат -

Traceback (most recent call last):
 File "./test.py", line 9, in <module>
   print(A.convert('str'))
 File "/home/thomas/Projects/Python/Modules/datacont/baseunits.py", line 307, in convert
   newunit = newunit()
TypeError: 'str' object is not callable
...