How can I upgrade values from a base dataclass to one that inherits from it?
Example (Python 3.7.2)
from dataclasses import dataclass
@dataclass
class Person:
name: str
smell: str = "good"
@dataclass
class Friend(Person):
# ... more fields
def say_hi(self):
print(f'Hi {self.name}')
friend = Friend(name='Alex')
f1.say_hi()
prints "Hi Alex"
random_stranger = Person(name = 'Bob', smell='OK')
return for random_stranger "Person(name='Bob', smell='OK')"
How do I turn the random_stranger into a friend?
Friend(random_stranger)
returns "Friend(name=Person(name='Bob', smell='OK'), smell='good')"
I'd like to get "Friend(name='Bob', smell='OK')" as a result.
Friend(random_stranger.name, random_stranger.smell)
works, but how do I avoid having to copy all fields?
Or is it possible that I can't use the @dataclass decorator on classes that inherit from dataclasses?