<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: adekoder</title>
    <description>The latest articles on DEV Community by adekoder (@adekoder).</description>
    <link>https://dev.to/adekoder</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F23085%2F9ce4dfbe-04d6-4571-8828-7b3bcb7bf44c.jpg</url>
      <title>DEV Community: adekoder</title>
      <link>https://dev.to/adekoder</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adekoder"/>
    <language>en</language>
    <item>
      <title>Mutable objects vs Python functions.</title>
      <dc:creator>adekoder</dc:creator>
      <pubDate>Mon, 05 Feb 2018 20:11:28 +0000</pubDate>
      <link>https://dev.to/adekoder/mutable-objects-vs-python-functions-1dhd</link>
      <guid>https://dev.to/adekoder/mutable-objects-vs-python-functions-1dhd</guid>
      <description>&lt;p&gt;We know every thing in python is an object and can be classed into mutable and immutable, where mutable object are object whose state can change after construction while the latter are object whose state cannot be change after construction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AUB6ooKAQT8cJH5BapJFsHw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AUB6ooKAQT8cJH5BapJFsHw.png"&gt;&lt;/a&gt;code snippet made pretty by &lt;a href="https://carbon.now.sh" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://carbon.now.sh" rel="noopener noreferrer"&gt;https://carbon.now.sh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Both Dictionary and List in python are mutable, therefore caution should be taken when passed as an argument to functions because they are passed by reference and not by value, meaning that when passed to a function as an argument the object is referenced and a copy of the object is not created which might cause a bug depending on what you’re trying to achieve with your code.&lt;/p&gt;

&lt;p&gt;Here is a code snippet to understand what is happening when you pass a mutable object to a function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AroM1ggVVs_LJvPXT3wFljg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AroM1ggVVs_LJvPXT3wFljg.png"&gt;&lt;/a&gt;code snippet made pretty by &lt;a href="https://carbon.now.sh" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://carbon.now.sh" rel="noopener noreferrer"&gt;https://carbon.now.sh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this code snippet above, i have a variable &lt;strong&gt;“leader_board”&lt;/strong&gt; that references a dictionary object which hold a data of leaderboard score, also there is a function which add a new member to my leader board, the function &lt;strong&gt;“add_new_member”&lt;/strong&gt; accepts a dictionary object of the leaderBoard, the name of the new member and the score, when this function is called and passed in the &lt;strong&gt;“leader_board”&lt;/strong&gt; object, the name of the new member &lt;strong&gt;(‘janet’)&lt;/strong&gt; and the score &lt;strong&gt;(12).&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;leader_board[name] = score&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This state above within the function add a new key:value pair data to the leader board object in memory.&lt;/p&gt;

&lt;p&gt;when the function &lt;strong&gt;“add_new_member”&lt;/strong&gt; is called it reference the leader_board object in memory and change the value in-place, when the leader_board is printed within the function we get.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;{‘james’:23, ‘doe’:20, ‘mat’: 15, ‘janet‘: 12}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also when the leader_board object is print out side the function we get the same result. To confirm this let run an object test by updating the code to return the leader_board from the function and use the &lt;strong&gt;“is”&lt;/strong&gt; operator to do object test.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A5FLRpuwucOasdHDy3Z9ICg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2A5FLRpuwucOasdHDy3Z9ICg.png"&gt;&lt;/a&gt;code snippet made pretty by &lt;a href="https://carbon.now.sh" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://carbon.now.sh" rel="noopener noreferrer"&gt;https://carbon.now.sh&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;print(result is leader_board)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This above statement will return True because the &lt;strong&gt;“is”&lt;/strong&gt; operator is checking if the two operands i.e result and leader_board are referencing the same object and are of equal value equal.&lt;/p&gt;

&lt;p&gt;I also added a new block of code below in the codebase to show that the &lt;strong&gt;“is”&lt;/strong&gt; operator actually does what it does the &lt;strong&gt;“print( leader_board is leader_board_2)”&lt;/strong&gt; will return False because the two are different object in the memory, even if they have the same data they must reference the same object.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;h3&gt;
  
  
  Overriding the universe
&lt;/h3&gt;

&lt;p&gt;Mutable object being passed by reference to a function might be useful in must cases but what if that not how i want my code to behave, what if i want my code to accept a mutable object and return a new one without affecting the result of the one passed to it, the solution is to use the &lt;strong&gt;“copy()”&lt;/strong&gt; method provided by mutable objects, the copy function return a shallow copy of the object and that can be assigned to another variable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AXT7UVg0R5zh9QhwvhUW-4A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F1024%2F1%2AXT7UVg0R5zh9QhwvhUW-4A.png"&gt;&lt;/a&gt;code snippet made pretty by &lt;a href="https://carbon.now.sh" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://carbon.now.sh" rel="noopener noreferrer"&gt;https://carbon.now.sh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the new updated codebase above now using &lt;strong&gt;“copy”&lt;/strong&gt; method with the mutable object, return a shallow copy of the data and create a new object in memory , and you can see that our &lt;strong&gt;“result”&lt;/strong&gt; object is different from the &lt;strong&gt;“leader_board”&lt;/strong&gt; object, when we do an object test &lt;strong&gt;“print(result is leader_board)”&lt;/strong&gt; we get False to show that they are not the same object in memory.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: the whole story above apply to List object as well, it also mutable.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;So depending on what you’re trying to achieve with you code know when to really on mutable object being passed by reference and when to override the behaviour else 😢 🐛 🐛 😢.&lt;/p&gt;

&lt;p&gt;Don’t forget to share this with your fellow pythonistas you might save a soul.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

</description>
      <category>function</category>
      <category>programming</category>
      <category>python</category>
      <category>mutableobjects</category>
    </item>
    <item>
      <title>Managing Class Attributes In Python</title>
      <dc:creator>adekoder</dc:creator>
      <pubDate>Wed, 18 Oct 2017 15:18:50 +0000</pubDate>
      <link>https://dev.to/adekoder/managing-class-attributes-in-python-2g8a</link>
      <guid>https://dev.to/adekoder/managing-class-attributes-in-python-2g8a</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Dg71qM6k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AORR77SMEwnjm95bJmZSbWg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Dg71qM6k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AORR77SMEwnjm95bJmZSbWg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hello guys, in this blog post we are going to dig down into some python programming trick , or do i say features we can leverage on as python developers, we all know every thing in python is an object, class is an object , instance is an object , function is an object etc.&lt;/p&gt;

&lt;p&gt;We all know that any time we do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;object.attribute or object.attribute = value`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;We are trying to get the attribute or set the attribute of an object which is very common in all python programs especially when working with  &lt;strong&gt;classes.&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  So what ? why should you care?
&lt;/h4&gt;

&lt;p&gt;So why should you worry about attribute management , now let me break it down , here are some possible scenarios :&lt;/p&gt;
&lt;h4&gt;
  
  
  USE CASE #1
&lt;/h4&gt;

&lt;p&gt;We know in python we can access any class attribute by referencing it with the obj.attribute.call , which means our attributes are open for various operations such as read , write , delete. Here is an example in the code snippet below:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;When this code is executed , below is the result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; John Doe you a confirmed user 
&amp;gt;&amp;gt;&amp;gt; John Doe you're not yet confirmed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can see that, we have altered the state of our object outside the context of the class , when we reference the &lt;strong&gt;confirmed&lt;/strong&gt; attribute, and set it to false.&lt;/p&gt;

&lt;p&gt;Most times we don’t want that we want to set permission on our attribute , such as read-only , or read and write attribute access e.t.c. In other to prevent the outside world of changing the state of our class.&lt;/p&gt;
&lt;h4&gt;
  
  
  USE CASE #2
&lt;/h4&gt;

&lt;p&gt;Sometimes we want to hook into the attribute and perform some changes to it at the point when it’s been accessed by calls like this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; obj.attribute 
&amp;gt;&amp;gt;&amp;gt; obj.attribute = value
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;attribute management play a big role here as we will see in this post, there are more use cases, but we’ll leave this two so as not to make this Post bulky.&lt;/p&gt;
&lt;h3&gt;
  
  
  Features :
&lt;/h3&gt;

&lt;p&gt;Here are the python features that help us manage attribute access in our code&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;__getattr__&lt;/strong&gt; and &lt;strong&gt;__setattr__&lt;/strong&gt; methods, for routing undefined attribute fetches and all attribute assignments to generic handler methods.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;__getattribute__&lt;/strong&gt; method, for routing all attribute fetches to a generic handler method.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;property built-in&lt;/strong&gt; , for routing specific attribute access to get and set handler functions.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;descriptor protocol&lt;/strong&gt; , for routing specific attribute accesses to instances of classes with arbitrary get and set handler methods, and the basis for other tools such as properties and slots.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this post , i will be going through the last two features in the list above,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;i promise to create another post that explain the other two.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  Prerequisites
&lt;/h4&gt;

&lt;p&gt;To make use of this post a basic knowledge of ‘ &lt;strong&gt;OOP’&lt;/strong&gt; python is needed , also if you are trying out the examples with python 2.x, note that you should use the &lt;a href="https://www.python.org/doc/newstyle/"&gt;&lt;strong&gt;new-style classes.&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Property Protocol&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The property protocol allows us to route a specific attribute’s &lt;em&gt;get&lt;/em&gt;, &lt;em&gt;set&lt;/em&gt;, and &lt;em&gt;delete&lt;/em&gt; operations to functions or methods we provide, enabling us to insert code to be run automatically on attribute access, intercept attribute deletions, and provide documentation for the attributes if desired.&lt;/p&gt;

&lt;p&gt;A property is created by assigning the result of a built-in function to a class attribute:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; attribute = property(fget, fset, fdel, doc)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The property attribute take four optional positional arguments where the first argument is the callback to run when when the attribute is referenced, this callback return a value.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; obj.attribute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The second argument is the callback to run when the object is been assign a value, this callback return  &lt;strong&gt;None.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; obj.attribute = value
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The third argument is ‘ &lt;strong&gt;fdel’&lt;/strong&gt; is a callback when a ‘ &lt;strong&gt;del&lt;/strong&gt; ’ operation is performed on an attribute, this callback return  &lt;strong&gt;None.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; del obj.attribute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;While the last argument doc is doc-string.&lt;/p&gt;

&lt;p&gt;All this argument are optional if one of them is not passed, and we try performing the operation python raises an ‘ &lt;strong&gt;AttributeError’&lt;/strong&gt; Exception stating that the operation is not allowed .&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;enough of the story let me show you how it works in code&lt;/p&gt;
&lt;/blockquote&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;This code snippet on your left , does not do any thing meaningful, but it shows how the property built-in can be used when the attribute is referenced or assign a value , here is the result when the code is executed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; getting attribute
&amp;gt;&amp;gt;&amp;gt; John Doe 
&amp;gt;&amp;gt;&amp;gt; setting value 
&amp;gt;&amp;gt;&amp;gt; This is person name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;With the fact that we can hook into when an attribute is referenced, it a platform for us to create some attribute access modification here, where by we can only provide a read-only access to the &lt;strong&gt;name&lt;/strong&gt; attribute used in this context.&lt;/p&gt;

&lt;p&gt;Let us remove the &lt;strong&gt;‘setName’&lt;/strong&gt; and &lt;strong&gt;‘delName’&lt;/strong&gt; method that we passed into our property built-in it and give it a read-only access.&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;This is what we get when we run this code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; getting attribute John Doe 
Traceback (most recent call last): 
File
 "/home/user/path/python\_files/read\_only\_property.py", line 14,
 in \&amp;lt;module\&amp;gt; person1.name = 'smith' 
AttributeError: can't set attribute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;With the above code, we’ve set the name attribute to be a read-only attribute, where by if we try to set a new value to it , we get an error.&lt;/p&gt;

&lt;p&gt;What if we don’t want the attribute to be readable and writable? it’s simple, we set the attribute to the property built-in without passing it any argument like this :&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; name = property()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;And if the name attribute is fetched or set an Exception is raised.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; Traceback (most recent call last):
 File 
"/home/user/path/python\_files/pratice.py", line 13, 
in \&amp;lt;module\&amp;gt; print(person1.name) 
AttributeError: unreadable attribute
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Let’s go to a more meaningful use case of property protocol, let say we have a class &lt;em&gt;Employee&lt;/em&gt; that collects the name of the employee, and the salary at the point of instantiation , and we want it to deduct tax from the salary whenever, the salary attribute is referenced , the below code shows how:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;Here is the output.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; 2982.0 
&amp;gt;&amp;gt;&amp;gt; 994000.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can see that at the point of getting the attribute we have hooked into the process, and performed some code while returning the value.&lt;/p&gt;
&lt;h3&gt;
  
  
  Coding property with decorator
&lt;/h3&gt;

&lt;p&gt;Coding property with this syntax above is fine but there is a more pythonic way of doing it with python decorators, this is possible because decorators are just simple function name rebind.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Person: 
    @property
    def name(self): ...

same as :

name = property(name)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Example:
&lt;/h4&gt;

&lt;p&gt;Using the above employee class example,&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;i have now re-factored our code to use the property decorator syntax to perform the same effect as the other one. The property decorator has attribute for getting , setting and deleting attribute&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@property.getter for specifying the get function
@attribute_name.setter for specifying the set function
@attribute_name.deleter for specifying the del function

the getter attribute on the property decorator function is optional 
because a call to @property() take getter has it default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;There you have it, one of the features for managing attribute access in python , there are more use cases of this features , still figuring them out as i learn more .&lt;/p&gt;

&lt;p&gt;Note: I was suppose to also explain the descriptor protocol in this post, but i skipped that in order not to make this post bulky , a dedicated post on &lt;strong&gt;Descriptor protocol&lt;/strong&gt; would be put up soon.&lt;/p&gt;

&lt;p&gt;If you have suggestion , question , or you noticed an error in this post kindly comment below or reach out to me on &lt;a href="https://twitter.com/adekoder"&gt;twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks , Happy Pythoning!&lt;/p&gt;




</description>
      <category>programming</category>
      <category>python</category>
      <category>decorators</category>
      <category>property</category>
    </item>
    <item>
      <title>Hi, I'm adewumi</title>
      <dc:creator>adekoder</dc:creator>
      <pubDate>Sun, 25 Jun 2017 08:52:10 +0000</pubDate>
      <link>https://dev.to/adekoder/hi-im-adewumi</link>
      <guid>https://dev.to/adekoder/hi-im-adewumi</guid>
      <description>&lt;p&gt;I have been coding for 3 years.&lt;/p&gt;

&lt;p&gt;You can find me on GitHub as &lt;a href="https://github.com/adekoder" rel="noopener noreferrer"&gt;adekoder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I live in Lagos nigeria.&lt;/p&gt;

&lt;p&gt;Am a freelancer. &lt;/p&gt;

&lt;p&gt;I mostly program in these languages: python , PHP ,javascript.&lt;/p&gt;

&lt;p&gt;I am currently learning more about python, data structure and algorithm&lt;/p&gt;

&lt;p&gt;Nice to meet you.&lt;/p&gt;

</description>
      <category>introduction</category>
    </item>
  </channel>
</rss>
