019 python面相对象编程--系统整理

Posted 曹军

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了019 python面相对象编程--系统整理相关的知识,希望对你有一定的参考价值。

一:self的意思

1.说明

  self代表类的实例,而非类。

  类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

   self 代表的是类的实例,代表当前对象的地址,而 self.__class__ 则指向类。

 

2.程序

 1 #-*-encoding=utf-8-*-
 2 class Bail:
 3     def setName(self,name):
 4         self.name=name
 5     def lick(self):
 6         print("%s..."%self.name)
 7 
 8 a=Bail()
 9 a.setName("tom A")
10 a.lick()
11 
12 ###    __init__  
13 class BailB:
14     def __init__(self,name):
15         self.name=name
16     def lick(self):
17         print("%s..."%self.name)
18 
19 b = BailB(\'tom B\')
20 b.lick()

 

3.效果

  因为有self。

  

 

二:公有与私有

1.说明

  python中没有正真的私有

 

2.程序

  程序一是直接调用,但是私有的时候不可以,但是可以按照下面的方式也可以直接地调用

  python将私有的名字变成这样了:_类名__变量名

 1 #-*-encoding=utf-8-*-
 2 
 3 ###
 4 class Bail:
 5     name=\'AAAA\'
 6 a=Bail()
 7 print(a.name)
 8 
 9 ###私有
10 class Bail:
11     __name=\'BBBB\'
12 a=Bail()
13 print(a._Bail__name)

 

3.效果

  

 

三:类变量

1.说明

  这个和Java优点不同,所以,要单独说明一下。

  如果,直在类中定义的变量,就是类变量。

  

 

2.程序说明

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 
 4 class Employee:
 5     \'所有员工的基类\'
 6     empCount = 0
 7 
 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 %d" % Employee.empCount)
15 
16     def displayEmployee(self):
17         print ("Name : ", self.name, ", Salary: ", self.salary)
18 
19 
20 "创建 Employee 类的第一个对象"
21 emp1 = Employee("Zara", 2000)
22 "创建 Employee 类的第二个对象"
23 emp2 = Employee("Manni", 5000)
24 emp1.displayEmployee()
25 emp2.displayEmployee()
26 print ("Total Employee %d" % Employee.empCount)

 

3.效果

  

 

四:继承

1.说明

  面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。

  通过继承创建的新类称为子类派生类,被继承的类称为基类父类超类

 

五:组合

1.程序说明

  不需要继承,直接实例化对象写在__init__中

 1 #!/usr/bin/python
 2 # -*- coding: UTF-8 -*-
 3 class aa:
 4     def printInfo(self):
 5         print ("aa")
 6 
 7 class bb:
 8     def printInfo(self):
 9         print ("bb")
10 
11 class zz:
12     def __init__(self):
13         ##组合
14         self.aa=aa()
15         self.bb=bb()
16     def printInfo(self):
17         aa.printInfo(self)
18         bb.printInfo(self)
19 
20 ss=zz()
21 ss.printInfo()

 

2.效果

  

 

  

 

以上是关于019 python面相对象编程--系统整理的主要内容,如果未能解决你的问题,请参考以下文章

Python面向对象编程总结(上)

PHP中面相对象对象的知识点整理

spring框架— 面相切面编程AOP

python面相对象进阶

2021年最新Python讲义:面向对象(OOP)基本概念

使用Java面相对象编程