一: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.效果