Python-类-__dict__

163 阅读1分钟
class Person:
	def __init__(self,name,job=0,pay=0):
		self.name=name
		self.job=job
		self.pay=pay
	def lastName(self):
		return self.name.split()[-1]
	def giveRaise(self,percent):
		self.pay=int(self.pay*(1+percent))
	def __str__(self):
		return '[person:%s,%s]'%(self.name,self.pay)
		
class Manager(Person):
	def __init__(self,name,pay):
		self.person=Person(name,'mgr',pay)
	def giveRaise(self,percent,bonus=.10):
		Person.giveRaise(self,percent+bonus)
	def __getattr__(self,attr):
		return getattr(self.person,attr)
	def __str__(self):
		return str(self.person)
		
bob=Person('Bob','div',10000)
sue=Person('Sue Smith','div',10000)
tom=Manager('tom',50000)	

class Department:
	def __init__(self,*args):
		self.members=list(args)
	def addMember(self,person):
		self.members.append(person)
	def giveRaise(self,percent):
		for person in self.members:
			person.giveRaise(percent)
	def showAll(self):
		for person in self.members:
			print(person)	
	
	


development=Department(bob,sue)
development.addMember(tom)
development.giveRaise(.10)
development.showAll()

>>> from person import Person
>>> bob=Person('Bob smith')
>>> print(bob)
[person:Bob smith,0]
>>> bob.__class__
<class 'person.Person'>
>>> bob.__class__.__name__
'Person'
>>> list(bob.__dict__.keys())
['name', 'job', 'pay']

>>> for key in bob.__dict__:
	print(key,'=.',bob.__dict__[key])

	
name =. Bob smith
job =. 0
pay =. 0
>>> for key in bob.__dict__:
	print(key,'=>',getattr(bob,key))

	
name => Bob smith
job => 0
pay => 0
>>>