Я обнаружил странное поведение между двумя версиями python-3.7.2. Первый, который я скомпилировал из source на моей хост-машине (Ubuntu 17.10), другой - это изображение Python Docker docker pull python:3.7
import abc
import typing
class Meta(metaclass=abc.ABCMeta):
pass
class Base(Meta):
pass
class Type(Base):
pass
T = typing.TypeVar('T', bound=Type)
class Variable(typing.Generic[T], Base):
"""
Variable docstring...
"""
class Member(Variable[T]):
__doc__ = Variable[T].__doc__
m = Member()
assert 'Variable docstring' in m.__class__.__doc__
Это утверждение отличается между моим хостом и докером. В докере строка документов наследуется от _GenericAlias
от typing.py
.
На самом деле на моем хост-компьютере, где Python был установлен из источников, typing.py
не содержит class _GenericAlias
, но python из образа докера находится под /usr/local/lib/python3.7/typing.py:591:class _GenericAlias(_Final, _root=True)
Почему такое поведение существует? И как их предотвратить в будущем?