Skip to content

Instantly share code, notes, and snippets.

@sooch
Last active October 3, 2018 01:04
Show Gist options
  • Save sooch/99389bd49ef07e4ea84436b220e7e33d to your computer and use it in GitHub Desktop.
Save sooch/99389bd49ef07e4ea84436b220e7e33d to your computer and use it in GitHub Desktop.
effective java builder pattern for python
#-*- coding: utf-8 -*-
class NutritionFacts(object):
def __init__(self, builder):
self.serving_size = builder.serving_size
self.servings = builder.servings
self.calories = builder.calories
self.fat = builder.fat
self.sodium = builder.sodium
self.carbohydrate = builder.carbohydrate
class Builder(object):
def __init__(self, serving_size, servings):
self.serving_size = serving_size
self.servings = servings
self.calories = None
self.fat = None
self.sodium = None
self.carbohydrate = None
def set_calories(self, val):
self.calories = val
return self
def set_fat(self, val):
self.fat = val
return self
def set_sodium(self, val):
self.sodium = val
return self
def set_carbohydrate(self, val):
self.carbohydrate = val
return self
def build(self):
return NutritionFacts(self)
nf = NutritionFacts.Builder(100, 5) \
.set_calories(300) \
.set_fat(10) \
.set_sodium(20) \
.set_carbohydrate(30) \
.build()
print(nf.calories)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment