@property
    def attrs(self):
        # Work on a copy of the attrs object since we're tweaking stuff
        attrs = dict(self.column.attrs)

        # Find the relevant th attributes (fall back to cell if th isn't
        # explicitly specified).
        attrs['th'] = AttributeDict(attrs.get('th', attrs.get('cell', {})))
        attrs['td'] = AttributeDict(attrs.get('td', attrs.get('cell', {})))

        # make set of existing classes.
        th_class = set((c for c in attrs['th'].get('class', '').split(' ') if c))
        td_class = set((c for c in attrs['td'].get('class', '').split(' ') if c))

        # add classes for ordering
        if self.orderable:
            th_class.add('orderable')
        if self.is_ordered:
            th_class.add('desc' if self.order_by_alias.is_descending else 'asc')

        # Always add the column name as a class
        th_class.add(self.name)
        td_class.add(self.name)

        attrs['th']['class'] = ' '.join(sorted(th_class))
        attrs['td']['class'] = ' '.join(sorted(td_class))
        return attrs
Proxy to `.Column.attrs` but injects some values of our own.
dataset/ETHPy150Open bradleyayers/django-tables2/django_tables2/columns/base.py/BoundColumn.attrs