python 面向对象

面向对象学习:代码

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 class Employee:
 4     empCount=0
 5     __secret_Phone=0   ##私有成员变量,不能在外部类的外部访问
 6     public_Phone=0   ##公有成员变量
 7     
 8     def __init__(self,name,salary):##四个下划线,类似构造函数
 9         self.name=name
10         self.salary=salary
11         Employee.empCount+=1
12         print("secret phone:%d"%Employee.__secret_Phone)##访问私有成员变量        
13     def display(self):
14         print("Total employee: %d" % Employee.empCount)##%前面没有,与C不同
15     def inFunc(self):
16         print(self)##地址
17         print(self.__class__)##类名
18 
19     def diplayEmployee(self):
20         print("Name:",self.name,",Salary:",self.salary)
21     def EmployeeMethod(self):
22         print("Employee method!")
23     def __add__(self,other):##运算符重载,双下划线为特殊方法
24         return Employee(self.name+other.name,self.salary+other.salary)
25 
26     def __del__(self):##析构函数
27         class_name=self.__class__.__name__
28         print(class_name,"销毁")
29 
30 
31 emp1=Employee("wj",1000)##实例化
32 emp2=Employee("lj",1000)##实例化
33 emp1.inFunc()##调用内部函数
34 emp3=emp1+emp2 ##重载运算符
35 print("emp3 __add__:",emp3.diplayEmployee())
36 print("public phone:%d"%emp1.public_Phone)
37 emp1.diplayEmployee()##调用成员函数
38 emp1.display()
39 emp1.age=8 ##添加新成员
40 emp1.age=9 ##修改新成员
41 print(emp1.age)
42 del emp1.age ##删除成员
43 print("hasattr:",hasattr(emp1,'age'))##检查是否存在age
44 print("getattr",getattr(emp1,'name'))##返回name值
45 print("setattr",setattr(emp1,'name',"lj"))##设置name为"lj"
46 ##内置函数
47 print("Employee.__doc__:",Employee.__name__)
48 
49 del emp1    ##删除类的实例
50 
51 class Manager(Employee):##继承,多个类(A,B)
52     workers=30
53     def __init__(self):
54         Manager.workers=10
55     def display(self):
56         print("Total workers:%d" % Manager.workers)
57     def ManagerMethod(self):
58         print("Manager method!")
59 
60 M1=Manager()#
61 M1.EmployeeMethod()##调用子类方法
62 M1.display()##调用父类方法重写方法
63 M1.workers=40##访问成员变量

执行结果:

===================== RESTART: D:python3.720180425.py =====================
secret phone:0
secret phone:0
<__main__.Employee object at 0x000002114D915A58>
<class '__main__.Employee'>
secret phone:0
Name: wjlj ,Salary: 2000
emp3 __add__: None
public phone:0
Name: wj ,Salary: 1000
Total employee: 3
9
hasattr: False
getattr wj
setattr None
Employee.__doc__: Employee
Employee 销毁
Employee method!
Total workers:10
原文地址:https://www.cnblogs.com/ljwan1222/p/8948070.html