基本定义
# 1.如何定义类
# 2.属性方法
# 3.实例化
# 4.self是什么
# 5.构造方法
# 6 name mangling
class A:
__c = 100
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
return self.a + self.b
def getC(self):
return self.__c
a = A(1, 10)
print a.add()
print a.getC()
print a._A__c
继承
#继承
#class sonClass(fatherClass):
class B(A):
pass
b= B(1,100)
print b.add()
覆盖
#覆盖
#super方法Python3特有
class A:
__c = 100
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
return self.a + self.b
def getC(self):
return self.__c
class B(A):
def __init__(self,a,b,c):
A.__init__(self,a,b)
self.c = c
def add(self):
return self.a+self.b+self.c
def sub(self):
return self.a-self.b
bus = B(1,2,3)
print bus.add()
使用super
__metaclass__=type
class A:
__c = 100
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
return self.a + self.b
def getC(self):
return self.__c
class B(A):
def __init__(self,a,b,c):
super(B, self).__init__(a,b)
self.c = c
def add(self):
return super(B,self).add()+self.c
def sub(self):
return self.a-self.b
bus = B(1,2,3)
print bus.add()
组合
class Man:
def __init__(self,a):
self.num = a
class Woman:
def __init__(self,b):
self.num = b
class Cls:
def __init__(self,a,b):
self.man = Man(a)
self.woman = Woman(b)
def person(self):
print self.man.num,self.woman.num
c = Cls(10,100)
c.person()
绑定
1.类,类对象(类似c++ static),实例化对象的区别
2.绑定self
复习
1.基本实现一个类
__metaclass__=type
class Person:
def __init__(self,name):
self.person_name = name
def setName(self,name):
self.person_name = name
def getName(self):
return self.person_name
def printName(self):
print('person name is:',self.person_name)
a = Person('wangz')
a.printName()
>>person name is: wangz
#对属性对外部可以访问
a.person_name = 'zzz'
b=a.printName
b()
>>person name is: zzz
2.属性/方法的私有化(改写,假的)
将上述person_name加上下划线
class Person:
def __init__(self,name):
self.__person_name = name
def setName(self,name):
self.__person_name = name
def getName(self):
return self.__person_name
def printName(self):
print('person name is:',self.__person_name)
a = Person('wangz')
a.printName()
方法的私有:
class Pk:
def __init__(self,a,b):
self.a=a
self.b=b
#这是一个私有的方法,事实上在类的内部翻译成 _Pk__absPk()
def __absPk(self):
self.a=abs(self.a)
self.b=abs(self.b)
def add(self):
self.__absPk()
return self.a+self.b
a=Pk(1,-2)
print(a.add())