Найти - Пользователи
Полная версия: Определить тип объекта
Начало » Python для новичков » Определить тип объекта
1 2
Alex_Kutsan
есть функция
def add(self,user):
Хочу чтоб user был только типа TUser, точнее был экземпляром класса TUser.

Как это проверить? может есть какойто .ClassName?

Или самому вводить подобную переменную в свой класс TUser.
Но не хотелось бы чтоб программа падала если сообщить не правильную переменную в которой не будет моей ClassName

type(User) даёт

<type ‘instance’>
Андрей Светлов
isinstance(user, TUser)
Alex_Kutsan
Андрей Светлов
Большое спасибо. то что нужно.
atomAltera
Alex_Kutsan, вы тоже на Delphi писали?
Александр Кошелев
Проверять объект на его тип - плохой стиль в питоне.
DISKoRteS
Александр Кошелев
тогда что же “try” юзать ?
Александр Кошелев
DISKoRteS
тогда что же “try” юзать ?
Это зависит от. Но в большинстве случаев вообще реально обойтись без проверок, а где нет, там действительно можно обрабатывать исключения.
Alex_Kutsan
Было дело и на делфе писал. Скажите вы узнали об этом из желания получить тип объекта, или именации имён которые мне удобно давать Классам?
А насчёт надобности.
Как вы посоветуеле сделать допустим простую задачу такого типа:
class TUserlist:
def __init__(self):
list_=[]
def add(self):
if isinstance(user, TUser):
list_.add(user)
else: raise TypeError,'user must be TUser'
Может и действительно плохой тон определять тип переменных, но как хорошим тоном сделать подобный функционал?
doza_and
Как раз в этом случае определять тип может оказаться не очень хорошим тоном.
Если вы копите TUserlist то вас интересует вполне определенная функциональность TUser.
Она конечно может определяться базовым классом, но не обязательно.
см http://hlabs.spb.ru/development/zope/interface_description.html
http://docs.zope.org/zope.interface/human.ru.html
Если коротко - будет хорошо если TUserlist будет требовать от TUser только то что ему действительно надо. Если у вас так - то все хорошо, если нет-то можно использовать интерфейс (вместо наследования).
Александр Кошелев
Alex_Kutsan
Может и действительно плохой тон определять тип переменных, но как хорошим тоном сделать подобный функционал?
class Userlist(object):
def __init__(self):
self.list_=[]
def add(self, user):
self.list_.add(user)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB