1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3 ############################
4 #File Name: class1.py
5 #Author: frank
6 #Mail: frank0903@aliyun.com
7 #Created Time:2017-09-04 13:35:27
8 ############################
9
10 #self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。
11 #self 不是 python 关键字,我们把他换成 self1 也是可以正常执行的
12 class Testself:
13 def prt(self1):
14 print (self1)
15 print (self1.__class__)
16
17 t = Testself()
18 t.prt()
19
20 class Employee:
21 'base class of all employees'
22 empCount = 0 #类变量
23
24 def __init__(self, name, salary): #构造函数
25 self.name = name #self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
26 self.salary = salary
27 Employee.empCount += 1
28
29 def displayCount(self):
30 print ("Total Employee %d" % Employee.empCount)
31
32 def displayEmployee(self):
33 #print ("Name:",self.name, ", Salary:", self.salary)
34 print ("Name:%s, Salary:%d"%(self.name,self.salary))
35
36 #类的内置属性
37 print ("Employee.__doc__:", Employee.__doc__)
38 print ("Employee.__name__:", Employee.__name__)
39 print ("Employee.__module__:", Employee.__module__)
40 print ("Employee.__bases__:", Employee.__bases__)
41 print ("Employee.__dict__:", Employee.__dict__)
42
43 emp1 = Employee("one", 100)
44 emp2 = Employee("two", 200)
45
46 emp1.displayCount()
47 print ("Total Employee %d" % Employee.empCount)
48 emp1.displayEmployee()
49 emp2.displayEmployee()
50
51 #添加,删除,修改类的属性
52 emp1.age=7
53 emp1.age=8
54 del emp1.age
55
56 #getattr(obj, name[, default]) : 访问对象的属性。
57 #hasattr(obj,name) : 检查是否存在一个属性。
58 #setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。
59 #delattr(obj, name) : 删除属性。
60
61 print hasattr(emp1, 'age') # 如果存在 'age' 属性返回 True。
62 print setattr(emp1, 'age', 1) # 添加属性 'age' 值为 8
63 print getattr(emp1, 'age', 'not find') # 返回 'age' 属性的值
64 print delattr(emp1, 'age') # 删除属性 'age'
65
66 #类的内置属性
67 print ("Employee.__doc__:", Employee.__doc__)
68 print ("Employee.__name__:", Employee.__name__)
69 print ("Employee.__module__:", Employee.__module__)
70 print ("Employee.__bases__:", Employee.__bases__)
71 print ("Employee.__dict__:", Employee.__dict__)