Существует ли Pythonic способ типизировать параметр функции к определенному объекту модели django?

Допустим, у меня есть такая модель:

class Foo():
   name = models.CharField()

И функция, подобная этой:

def update_foo_name(foo_object):
   foo_object.name = "New Name"

Есть ли способ принудительно ввести тип update_foo_name(), чтобы сюда можно было передать только правильный объект Foo?

То есть что-то вроде update_foo_name(foo_object: Foo.objects).

Прошу прощения, если этот вопрос уже задавался, и заранее благодарю за любые ответы!

питонический способ должен быть

class Foo():
    name = models.CharField()
    
    def change_name(self, new_name: str):
        self.name = new_name
        self.save()

если вы действительно хотите сделать это вне области видимости Foo, в глобальной функции или, например, из класса Bar, то способ гарантии таков:

class Bar()
   ...

    def method_to_change_foo_name_for_any_reason(self, foo: Foo):
        assert isinstance(foo, Foo), TypeError("Not a Foo object")
        foo.name = "New name that bar gives to foo"
        foo.save()

Python не делает статическую проверку типов, смотрите подробности здесь.


Это означает, что это:

def set_foo_name(foo: Foo):
    foo.name="New Name"

не вызывает исключения при передаче объекта другого типа.

Вам придется выполнить assert isinstance(foo, Foo) в соответствии с ответом Луида.

Вернуться на верх