Difference between revisions of "Python:Classes"
Jump to navigation
Jump to search
m |
|||
Line 5: | Line 5: | ||
;__init__(self, <parameters that can be provided with default value>) | ;__init__(self, <parameters that can be provided with default value>) | ||
− | :Constructor, automatically called when the object is instantiated. | + | :Constructor, automatically called when the object is instantiated. Use this to initialize the object attributes. |
;__del__(self) | ;__del__(self) | ||
Line 13: | Line 13: | ||
:Returns the string representation of the object. E.g. if you use print(object) or str(object) | :Returns the string representation of the object. E.g. if you use print(object) or str(object) | ||
− | All interaction with the object should go via a method, not to variables in the class. | + | All interaction with the object should go via a method, not to variables in the class (use interface, not implementation). Python has no mechanism to enforce this. Variable name can be obfuscated by putting underscore before their name. You can do this with methods too that should not be called directly but only from other methods. |
Example: | Example: | ||
<syntaxhighlight lang=python> | <syntaxhighlight lang=python> | ||
class Medium: | class Medium: | ||
− | def __init__(self, | + | def __init__(self, title='', price=0): |
− | self. | + | self.__title = title |
− | self. | + | self.__price = price |
def __str__(self): | def __str__(self): | ||
− | return " | + | return "Title: {0}\nPrice: {1:6.2f}".format(self.__title,self.__price) |
− | def | + | def gettitle(self): |
− | return self. | + | return self.__title |
− | def | + | def settitle(self, title): |
− | self. | + | self.__title = title |
− | def | + | def getprice(self): |
− | return self. | + | return self.__price |
− | def setprijs(self, | + | def setprijs(self,price): |
− | self. | + | self.__price = price |
def getall(self): | def getall(self): | ||
− | return [self. | + | return [self.gettitle(),self.getprice()] |
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 21:23, 30 April 2018
Create your own classes
- self
- The namespace of the current instance. Can have any name, 'self' is commonly used.
- __init__(self, <parameters that can be provided with default value>)
- Constructor, automatically called when the object is instantiated. Use this to initialize the object attributes.
- __del__(self)
- Destructor, automatically called when the object is removed.
- __str__(self)
- Returns the string representation of the object. E.g. if you use print(object) or str(object)
All interaction with the object should go via a method, not to variables in the class (use interface, not implementation). Python has no mechanism to enforce this. Variable name can be obfuscated by putting underscore before their name. You can do this with methods too that should not be called directly but only from other methods.
Example:
class Medium:
def __init__(self, title='', price=0):
self.__title = title
self.__price = price
def __str__(self):
return "Title: {0}\nPrice: {1:6.2f}".format(self.__title,self.__price)
def gettitle(self):
return self.__title
def settitle(self, title):
self.__title = title
def getprice(self):
return self.__price
def setprijs(self,price):
self.__price = price
def getall(self):
return [self.gettitle(),self.getprice()]