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))

浙公网安备 33010602011771号