CSE 163
More Objects�
Suh Young Choi�
🎶 Listening to: Shang-Chi soundtrack
💬 Before Class: Are animals better when they’re orbular or angular (aesthetically)?
This Time
Last Time
2
Private
3
class Dog:
def __init__(self, name: str) -> None:
self._name: str = name
def bark(self) -> None:
print(self._name + ': Woof')
Private
4
class SpiderFolk:
def __init__(self, name: str) -> None:
self._name: str = name
def _secret_identity(self) -> str:
if ‘spider’ not in self._name.lower():
return “Spider-Man!”
else:
return “who?”
def get_me_pictures(self, count: int) -> None:
print(f’{count} pictures of {self._secret_identity()}’)
“Getter” vs. “Setter” methods
5
class SpiderFolk:
def __init__(self, name: str) -> None:
self._name: str = name
def get_name(self) -> str:
return self._name # a getter method
def rename(self, new_name: str) -> None:
self._name = new_name + “(renamed)” # a setter method
Default Parameters
=
6
def append_to(element: int,
to: list[int] = []) -> list[int]:
to.append(element)
return to
my_list = append_to(12)
print(my_list)
my_other_list = append_to(42)
print(my_other_list)
Default Parameters Done Right
7
# Option 1
def append_to(element: int,
to: list[int] | None = None) -> list[int]:
if to is None:
to = []
to.append(element)
return to
# Option 2
def append_to(element, to=None):
to = [] if to is None else to
to.append(element)
return to
Lambdas
Introduce: Lambda functions– these let us define functions within the body of our code!
8
def get_dog_name(d):
return d.get_name()
sorted(dogs, key=get_dog_name)
sorted(dogs, key=lambda d: d.get_name())
Before Next Time
Next Time
9