Minor speedup when doing comparisons.

Shred 2 getattr calls + 1 global lookup to 1 global lookup.
This commit is contained in:
Rapptz 2017-05-18 05:15:06 -04:00
parent 8e34a256a4
commit 8526995004
2 changed files with 8 additions and 4 deletions

View File

@ -106,8 +106,10 @@ def flatten_user(cls):
return cls
_BaseUser = discord.abc.User
@flatten_user
class Member(discord.abc.Messageable, discord.abc.User):
class Member(discord.abc.Messageable, _BaseUser):
"""Represents a Discord member to a :class:`Guild`.
This implements a lot of the functionality of :class:`User`.
@ -170,7 +172,7 @@ class Member(discord.abc.Messageable, discord.abc.User):
' bot={1.bot} nick={0.nick!r} guild={0.guild!r}>'.format(self, self._user)
def __eq__(self, other):
return isinstance(other, discord.abc.User) and other.id == self.id
return isinstance(other, _BaseUser) and other.id == self.id
def __ne__(self, other):
return not self.__eq__(other)

View File

@ -35,7 +35,9 @@ import asyncio
Profile = namedtuple('Profile', 'premium user mutual_guilds connected_accounts premium_since')
class BaseUser(discord.abc.User):
_BaseUser = discord.abc.User
class BaseUser(_BaseUser):
__slots__ = ('name', 'id', 'discriminator', 'avatar', 'bot', '_state')
def __init__(self, *, state, data):
@ -50,7 +52,7 @@ class BaseUser(discord.abc.User):
return '{0.name}#{0.discriminator}'.format(self)
def __eq__(self, other):
return isinstance(other, discord.abc.User) and other.id == self.id
return isinstance(other, _BaseUser) and other.id == self.id
def __ne__(self, other):
return not self.__eq__(other)