Ned Batchelder wrote:
On 9/30/17 7:18 PM, Bill wrote:
Ned Batchelder wrote:
On 9/30/17 5:47 PM, Bill wrote:
I spent a few hours experimenting with @property. To my mind it
seems like it would be preferable to just define (override)
instance methods __get__(), __set__(), and possibly __del__(), as
desired, as I could easily provide them with "ideal" customization.
Am I overlooking something?
It would be easier to comment if you showed the two options. One
with @property, and one with __get__ etc.
A downside to __get__ is that you need to create a class with those
methods, and then instantiate that class as an attribute in your
real class, whereas @property can be used without a lot of rigamarole.
--Ned.
I am basically mimmicking what I see at (the very bottom of) this page:
https://www.programiz.com/python-programming/property
Can you show us the code you are using it to mimic that?
--Ned.
Here it is, Ned. It's my first attempt at using classes in Python.
I still have to learn how to incorporate datetime appropriately! :)
import datetime
# object oriented example class Employee(object):
''' This class will abstract an employee. Class date members name, a
string birthday, a date object address, a string position It also has a
static data member for the number of employees. ''' num_employees =0 # class data item @classmethod def get_num_employees(cls):
return Employee.num_employees
def __init__(self, name, birthdate, address, position):
Employee.num_employees +=1 self.name = name
self.birthdate = birthdate
self.address = address
self.position = position
@property def address(self):
print("**Hi from address-getter**")
return self._address
@address.setter def address(self, value):
print("*****Hi, from address setter()!")
self._address = value
def __del__(self):
print("******* Hi, from __del__()")
##Employee.num_employees -= 1 def __str__(self):
return 'Name: {}, Born: {} \nAddress: {} \nPosition: {} \n'.\
format(self.name,self.birthdate,self.address,self.position)
class SalesPerson(Employee):
def __init__(self, name, bdate, addr):
super().__init__(name, bdate, addr,"Salesperson")
def main():
emp1 = Employee("Sam","4/30/1970","212 Elm","Programmer")
emp2 = SalesPerson("Gene","5/1/79","414 Maple")
## Note: learn to use datetime.date--> str print(emp1)
print(emp2)
emp1.address ="230 Main Street" # call setter? print(emp1)
del(emp1)
print("Number of employees", Employee.get_num_employees())
print('*'*30)
main()#call main()
--
https://mail.python.org/mailman/listinfo/python-list