0% found this document useful (0 votes)
68 views2 pages

Pytest

The document describes different ways to implement descriptors to define properties for an Employee class. EmpIdDescriptor and EmpNameDescriptor use __get__ and __set__ methods to control attribute access and validation. Employee class defines empid and empname using these descriptors. Later implementations use @property decorator to define getter, setter and deleter methods to control attribute access and validation.

Uploaded by

Himanshu Verma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
68 views2 pages

Pytest

The document describes different ways to implement descriptors to define properties for an Employee class. EmpIdDescriptor and EmpNameDescriptor use __get__ and __set__ methods to control attribute access and validation. Employee class defines empid and empname using these descriptors. Later implementations use @property decorator to define getter, setter and deleter methods to control attribute access and validation.

Uploaded by

Himanshu Verma
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

class EmpNameDescriptor:

def __get__(self, obj, owner):


return self.__empname

def __set__(self, obj, value):


if not isinstance(value, str):
raise TypeError("'empname' must be a string.")
self.__empname = value

class EmpIdDescriptor:
def __get__(self, obj, owner):
return self.__empid

def __set__(self, obj, value):


if hasattr(obj, 'empid'):
raise ValueError("'empid' is read only attribute")
if not isinstance(value, int):
raise TypeError("'empid' must be an integer.")
self.__empid = value

class Employee:
empid = EmpIdDescriptor()
empname = EmpNameDescriptor()
def __init__(self, emp_id, emp_name):
self.empid = emp_id
self.empname = emp_name

e1 = Employee(123456, 'John')
print(e1.empid, '-', e1.empname)
e1.empname = 'Williams'
print(e1.empid, '-', e1.empname)
e1.empid = 76347322

class Employee:
def __init__(self, emp_id, emp_name):
self.empid = emp_id
self.empname = emp_name
def getEmpID(self):
return self.__empid
def setEmpID(self, value):
if not isinstance(value, int):
raise TypeError("'empid' must be an integer.")
self.__empid = value
empid = property(getEmpID, setEmpID)

class Employee:
def __init__(self, emp_id, emp_name):
self.empid = emp_id
self.empname = emp_name
@property
def empid(self):
return self.__empid
@empid.setter
def empid(self, value):
if not isinstance(value, int):
raise TypeError("'empid' must be an integer.")
self.__empid = value
@property
def empname(self):
return self.__empname
@empname.setter
def empname(self, value):
if not isinstance(value, str):
raise TypeError("'empname' must be a string.")
self.__empname = value
@empname.deleter
def empname(self):
del self.__empname

#!/bin/python3

import sys
import os

# Add Celsius class implementation below.


class Celsius:
def __get__(self,obj,val):
return float(self.celsius)

def __set__(self,obj,val):
self.celsius=val

# Add temperature class implementation below.


class Temperature:
celsius=Celsius()
def __init__(self,value):
self.fahrenheit=value
self.celsius=(value-32)*(5/9)

'''Check the Tail section for input/output'''

if __name__ == "__main__":
with open(os.environ['OUTPUT_PATH'], 'w') as fout:
res_lst = list()
t1 = Temperature(int(input()))
# res_lst.append((t1.fahrenheit, t1.celsius))
t1.celsius = int(input())
res_lst.append((t1.fahrenheit,t1.celsius))
fout.write("{}\n{}".format(*res_lst))

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy