› Forums › CS50’s Introduction to Computer Science by Harvard University on Edx › Week 6: Python › CS105: Introduction to Python by Saylor Academy › Unit 10: Object-Oriented Programming › Understanding pure functions vs modifiers in object-oriented programming: Concepts and examples
- This topic is empty.
- 
		AuthorPosts
- 
		
			
				
September 6, 2024 at 12:51 pm #3397Source: Created with AI tool In object-oriented programming, the terms “pure function” and “modifier” (or “mutator”) refer to two different ways methods interact with an object’s state. Pure Function:A pure function is a method that: 
 – Does not modify the state of the object it is called on.
 – Instead, it returns a new value (or object) based on the object’s state and the parameters passed to it.
 – It does not cause side effects. It relies only on the inputs and produces consistent outputs without altering anything external to the method.Modifier (or Mutator):A modifier is a method that changes the state of the object it is called on. Instead of returning a new object or value, it typically alters the internal attributes (fields) of the object, which can impact the future behavior of the object. Explanation of theincrementMethod:Let’s break down what the code is doing: # inside class Time: def increment(self, seconds): seconds += self.time_to_int() return int_to_time(seconds)- This method takes a secondsargument and adds it to the current time (converted to seconds using the methodtime_to_int).
- It returns a new Timeobject, which is the result of adding the given number of seconds to the existing time.
- It does not modify the original time object. The original time stays the same, and instead, a new Timeobject is created and returned.
 This is why it is considered a pure function—it does not alter the state of the original object; it just computes and returns a new result. Modifier Example:On the other hand, a modifier method would directly change the state of the object. Here’s an example: # inside class Time: def increment(self, seconds): self.seconds += seconds # Directly modify the object's stateIn this version, instead of returning a new Timeobject, the method modifies the current object’ssecondsattribute. This makes it a modifier because it changes the state of the object directly.Example to Illustrate Pure Function vs Modifier:Suppose you have a Timeclass representing a time of day.Pure Function Example:class Time: def __init__(self, hours, minutes): self.hours = hours self.minutes = minutes def add_time(self, minutes): # Pure function: Returns a new Time object without modifying the original new_minutes = self.minutes + minutes new_hours = self.hours + new_minutes // 60 return Time(new_hours % 24, new_minutes % 60) # Usage time1 = Time(10, 30) time2 = time1.add_time(45) print(time1.hours, time1.minutes) # Outputs: 10 30 (Original object remains unchanged) print(time2.hours, time2.minutes) # Outputs: 11 15 (New object is returned)In this example: 
 –add_timeis a pure function because it does not changetime1. It returns a newTimeobject (time2) without affecting the original.Modifier Example:class Time: def __init__(self, hours, minutes): self.hours = hours self.minutes = minutes def increment(self, minutes): # Modifier: Changes the state of the object itself self.minutes += minutes self.hours += self.minutes // 60 self.minutes = self.minutes % 60 self.hours = self.hours % 24 # Usage time1 = Time(10, 30) time1.increment(45) print(time1.hours, time1.minutes) # Outputs: 11 15 (Object is modified)In this example: 
 –incrementis a modifier because it changes the internal state oftime1by updating itshoursandminutesattributes.Summary:- A pure function computes and returns a new value or object without changing the original object. It has no side effects.
- A modifier alters the internal state of the object on which it is called, changing its behavior and attributes going forward.
 
- This method takes a 
- 
		AuthorPosts
- You must be logged in to reply to this topic.


