Skip to content

Instantly share code, notes, and snippets.

@Arcensoth
Created September 13, 2021 14:18
Show Gist options
  • Select an option

  • Save Arcensoth/b85099fa2f668f27d1736cf342a5f0fc to your computer and use it in GitHub Desktop.

Select an option

Save Arcensoth/b85099fa2f668f27d1736cf342a5f0fc to your computer and use it in GitHub Desktop.

Revisions

  1. Arcensoth created this gist Sep 13, 2021.
    48 changes: 48 additions & 0 deletions python_abcs.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    from abc import ABC, abstractmethod


    class AbstractThing(ABC):
    @classmethod
    @abstractmethod
    def classy(cls):
    ...

    @classmethod
    @property
    @abstractmethod
    def class_proppy(cls):
    ...

    @abstractmethod
    def selfy(self):
    ...

    @property
    @abstractmethod
    def self_proppy(self):
    ...


    class ConcreteThing(AbstractThing):
    @classmethod
    def classy(cls):
    print("classy")

    @classmethod
    @property
    def class_proppy(cls):
    print("class_proppy")

    def selfy(self):
    print("selfy")

    @property
    def self_proppy(self):
    print("proppy")


    c = ConcreteThing()
    c.classy()
    c.class_proppy
    c.selfy()
    c.self_proppy