Just a quick blurb about a nice feature in Python.
Let's say you have the following:
class Person:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
You can create a new person like:
mickey = Person('Micky', 'Mouse')
# spoiler, he's not actually a person
You might find yourself often wanting to get Mickey's full name, "Mickey Mouse" in your code. To do this, you'll probably do:
fullname = mickey.first_name + ' ' + mickey.last_name
# or maybe you'll use format, or printf,
# depending on your style and how much coffee you've had that day.
Then, after you get tired of doing that all the time, you'll go back and add a method to your Person class:
class Person:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
def name(self):
return self.first_name + ' ' + self.last_name
and you'll instead use:
mickey.name()
# ==> Mickey Mouse
now.. the @property
decorator really just gives us a coding style advantage. mickey.name
would feel more natural than mickey.name()
, since the name is always returning the same value, and feels more like a property than a function.
So how is it used?
Again, let's modify the class:
class Person:
def __init__(self, first_name, last_name):
self.first_name = first_name
self.last_name = last_name
@property
def name(self):
return self.first_name + ' ' + self.last_name
Then, we can get the name as follows:
mickey.name
# ==> Mickey Mouse
That's it for now! If you're interested in Python, Django, Linux, VIM, tmux (and all these other random tools in my tech stack) follow me on dev.to or on Twitter @connorbode.
I'll post tips as I code!
Top comments (0)