Skip to content

Instantly share code, notes, and snippets.

@kevinbarabash
Created April 29, 2023 04:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kevinbarabash/cb9444d4aca1ffd7d7f74acf196fe2ac to your computer and use it in GitHub Desktop.
Save kevinbarabash/cb9444d4aca1ffd7d7f74acf196fe2ac to your computer and use it in GitHub Desktop.
Python version of https://doc.rust-lang.org/rust-by-example/trait.html (converted by ChatGPT)
class Sheep:
def __init__(self, name: str):
self.name = name
self.naked = False
def is_naked(self) -> bool:
return self.naked
def shear(self):
if self.is_naked():
print(f"{self.name} is already naked...")
else:
print(f"{self.name} gets a haircut!")
self.naked = True
class Animal:
@staticmethod
def new(name: str):
raise NotImplementedError
def name(self) -> str:
raise NotImplementedError
def noise(self) -> str:
raise NotImplementedError
def talk(self):
print(f"{self.name()} says {self.noise()}")
class Sheep(Animal):
def __init__(self, name: str):
self.name = name
self.naked = False
def name(self) -> str:
return self.name
def noise(self) -> str:
if self.is_naked():
return "baaaaah?"
else:
return "baaaaah!"
def talk(self):
print(f"{self.name} pauses briefly... {self.noise()}")
@staticmethod
def new(name: str):
return Sheep(name)
if __name__ == "__main__":
dolly: Sheep = Animal.new("Dolly")
dolly.talk()
dolly.shear()
dolly.talk()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment