+ 1
Please explain any classmethod , staticmethod , properties to me ,I'm unable to understand with given examples
1 Réponse
+ 7
classmethod and staticmethod:
In Python, when you want to call the method of a class you just defined, you first have to make an instance of the class
and then call the method from the object:
# defining the class
class A:
def my_method(self):
print('called my_method')
# instanciating it
obj = A()
# calling the method
obj.my_method()
But when you define a method as a staticmethod or as a classmethod you don't need to
create an instance of the class to call the method:
# defining the class
class A:
@classmethod
def my_classmethod(cls):
print('called my_classmethod')
@staticmethod
def my_staticmethod():
print('called my_staticmethod')
# calling the methods
A.my_classmethod()
A.my_staticmethod()
The example also shows the difference of class and static methods. It is how they are defined:
-- classmethods have at leats one parameter (a reference to the class);
-- staticmethods can have no parameter;
properties:
Properties are used to control the access to the class attributes.
We can control if someone tries to read it or change it:
class A:
def __init__(self):
_secret = 'very secret data' # this is the attribute I want to control access to
@property
def secret(self): # this is what will be called when someone tries to read the attribute
password = input('what is the password: ')
if password == 'correct password':
return _secret
else:
print('you are not allowed access.')
@secret.setter
def secret(self, value): # this is what will be called when someone tries to change the value
if value != 'eggs':
_secret = value
more information here:
https://docs.python.org/2/library/functions.html