Bring Your Logic using Python
341 subscribers
109 photos
1 video
4 files
544 links
Logic building using Python : Materials, links, e-books and Code snippets
Download Telegram
# @classmethod vs @staticmethod vs "plain" methods
# What's the difference?

class MyClass:
def method(self):

"""

Instance methods need a class instance and can access the instance through self.
"""
return 'instance method called', self

@classmethod
def classmethod(cls):

"""

Class methods don't need a class instance. They can't access the instance (self) but they have access to the class itself via cls.
"""

return 'class method called', cls

@staticmethod
def staticmethod():

"""

Static methods don't have access to cls or self. They work like regular functions but belong to the class's namespace.
"""
return 'static method called'

# All methods types can be
# called on a class instance:

>>> obj = MyClass()
>>> obj.method()

('instance method called', <MyClass instance at 0x1019381b8>)

>>> obj.classmethod()
('class method called', <class MyClass at 0x101a2f4c8>)

>>> obj.staticmethod()
'static method called'

# Calling instance methods fails
# if we only have the class object:

>>> MyClass.classmethod()
('class method called', <class MyClass at 0x101a2f4c8>)

>>> MyClass.staticmethod()
'static method called'

>>> MyClass.method()
TypeError:
"unbound method method() must be called with MyClass "
"instance as first argument (got nothing instead)"
If the local date format us DD/MM/YYYY, you can use the dayfirst=True argument in dateutil.parser.parse:

>>> from dateutil.parser import parse
>>> s = '6.5.2020'
>>> parse(s)
datetime.datetime(2020, 6, 5, 0, 0)
>>> parse(s, dayfirst=True)
datetime.datetime(2020, 5, 6, 0, 0)
Do you need something like range() but with float numbers? Try numpy.arange()

>>> range(0, 5, 0.5) #Error!

>>> np.arange(0, 5, 0.5)
array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])


If you need exactly X steps, but one step is not a short decimal number, you can use:

>>> np.linspace(0, 1, 4)
array([0., 0.3333333, 0.6666667, 1.])
# In Python 3.4+ you can use
# contextlib.suppress() to selectively
# ignore specific exceptions:

import contextlib

with contextlib.suppress(FileNotFoundError):
os.remove('somefile.tmp')

# This is equivalent to:

try:
os.remove('somefile.tmp')
except FileNotFoundError:
pass

# contextlib.suppress docstring:
#
# "Return a context manager that suppresses any
# of the specified exceptions if they occur in the body
# of a with statement and then resumes execution with
# the first statement following the end of
# the with statement."
What is the difference between __str__ and __repr__ in #Python?

In short, the goal of __repr__ is to be unambiguous and __str__ is to be readable.

==> "__repr__ is for developers, __str__ is for customers."
πŸπŸ“° Introduction to Git and GitHub for Python Developers

What is Git, what is GitHub, and what's the difference? Learn the basics of Git and GitHub from the perspective of a Pythonista in this tutorial
#python

https://realpython.com/python-git-github-intro/
πŸπŸ“Ί Reading and Writing CSV Files [Video]

This short course covers how to read and write data to CSV files using Python's built in "csv" module and the "pandas" library
#python
notifiers: The easy way to send notifications #python
We love #Python namedtuples, a tuple subclass with named fields: