# @classmethod vs @staticmethod vs "plain" methods
# What's the difference?
Instance methods need a class instance and can access the instance through
"""
return 'instance method called', self
Class methods don't need a class instance. They can't access the instance (self) but they have access to the class itself via
"""
return 'class method called', cls
Static methods don't have access to
"""
return 'static method called'
# All methods types can be
# called on a class instance:
('instance method called', <MyClass instance at 0x1019381b8>)
>>>
('class method called', <class MyClass at 0x101a2f4c8>)
'static method called'
# Calling instance methods fails
# if we only have the class object:
('class method called', <class MyClass at 0x101a2f4c8>)
'static method called'
TypeError:
"unbound method method() must be called with MyClass "
"instance as first argument (got nothing instead)"
# 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)"
Check yourself
Complexity : easy
CLOSING TIME: 30th April, 6PM
https://kahoot.it/challenge/07727305?challenge-id=4a3777ca-b8c9-4432-82d7-38e504fb31fc_1588074473234
Complexity : easy
CLOSING TIME: 30th April, 6PM
https://kahoot.it/challenge/07727305?challenge-id=4a3777ca-b8c9-4432-82d7-38e504fb31fc_1588074473234
Kahoot!
Play Kahoot! challenge: Duplicate of Python
Play this kahoot challenge about #Python #KS3 #If
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."
# 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."
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/
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/
Realpython
Introduction to Git and GitHub for Python Developers β Real Python
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.
ππΊ 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
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
We love #Python namedtuples, a tuple subclass with named fields: