Python之面向对象

1、面向对象基本概念

  类、类变量、数据成员、方法重载、实例变量、继承、实例化、方法、对象。

2、创建一个类

 

 1 #coding=UTF-8
 2 
 3 class Employee:
 4     'The basic class of all the Employees.'
 5     empCount = 0 # 类变量,其值为类的所有实例共享,访问方式:Employee.emCount
 6 
 7     # 构造函数:初始化对象。名称__init__ 固定。
 8     def __init__(self, name, salary):
 9         self.name = name
10         self.salary = salary
11         Employee.empCount += 1
12 
13     def displayCount(self):
14         print('Total employee is %d', Employee.empCount)
15 
16     def displayEmployee(self):
17         print('Name:%s, Salary:%d.' % (self.name, self.salary))
18     
19     # 析构函数:当对象不再被使用时被调用
20     def __del__(self):
21         class_name = self.__class__.__name__
22         print(class_name, 'destroyed')
23 
24 # 实例化时,需和class对其,否则报NameError: name 'Employee' is not defined
25     # emp1 = Employee('Gari', 2000)
26 emp1 = Employee('Tom', 2000)
27 emp2 = Employee('Good', 2000)
28 
29 emp1.displayEmployee()
30 emp2.displayEmployee()
31 
32 print("Total Employee %d" % Employee.empCount)
33 
34 # 添加一个属性
35 emp1.age = 7
36 emp2.age = 8
37 print("emp1 is %d years old, and emp2 is %d." % (emp1.age, emp2.age))
38 del emp1.age
39 # 和java不一样,类的对象的属性可以删除
40 # print("emp1 is %d years old, and emp2 is %d." % (emp1.age, emp2.age))
41 hasAge = hasattr(emp1, 'age')
42 print('Does emp1 have age attr? ', hasAge)
43 emp1Name = getattr(emp1, 'name')
44 print('The name of emp1 is ', emp1Name)
45 setattr(emp2, 'salary', 20000)
46 print("emp2's salary is %d now." % emp2.salary)
47 delattr(emp2, 'salary')
48 hasSalary = hasattr(emp2, 'salary')
49 print('Does emp2 have salary attr? ', hasSalary)
50 
51 # 内置类属性
52 print("Employee.__doc__:", Employee.__doc__)
53 print("Employee.__name__:", Employee.__name__)
54 print("Employee.__module__:", Employee.__module__)
55 print("Employee.__bases__:", Employee.__bases__)
56 print("Employee.__dict__:", Employee.__dict__)
57 
58 emp2 = emp1
59 print(id(emp1), id(emp2))

 

posted @ 2017-12-27 23:57  菜鸟也要飞一飞  阅读(183)  评论(0)    收藏  举报