python 面向对象
python面向对象三大特性:继承,多态,封装
方法(函数)相关知识
#多个函数获取或改变一个全局变量
PATH = '' #全局变量
def getContentList(request):
...
data = json.loads(request.body)
path = data['path']
global PATH #给全局变量在一个函数里赋值,必须使用global语句
PATH = path #赋值全局变量
return ...
def index(request):
if len(PATH):
path = PATH #使用改变后的变量
return ...
python 面向对象 =》类,对象(作用:封装代码)
就是class 了 ,把 共同完成一个功能的多个函数 封装在一个类中
方法(函数) -》公有,私有 __
class Hero():
sum = 0 #类变量
def __init__(self,name,gender): #构造函数,(实例变量初始化)不能返回除None外的其他值
self.hero_name = name #实例变量 self.xxxx self代表对象
self.skill = ['Q','W','E','R']
self.base_skill = ['D','F']
self.gender = gender
self.__dead = False #私有变量
#self.__class__.sum += 1
def print_skill(self): #实例方法
#print (self.skill)
return self.skill
def get_base_skill(self):
self.iner_call() #类内部函数间调用
return self.base_skill
def iner_call(self):
print('iner call test.')
def __hidden(): #私有方法
print("hidden")
@classmethod
def plus_sum(cls): #类方法
cls.sum += 1
@staticmethod
def add(x,y): #静态方法(不经常使用)
print('static method', x + y)
lux = Hero('lux','women') #实例化(使用class创建对象)
a = lux.print_skill()
b = lux.get_base_skill()
c = lux.plus_sum()
Hero.plus_sum() #sum + 1
Hero.add(3,4)
#print(lux.dead,Hero.__hidden())
print(lux.__dict__,'\n',a,b,c,Hero.sum,lux.sum)
继承
# class Father_class(): #父类
# print ("i'm your father")
# class Son_class(Father_class): #子类
# pass
# Son_class()
class Father():
sum = 0
def __init__(self,name,gender):
self.name = name
self.gender = gender
def get_name(self):
return self.name
def hall(self):
print('f11111')
class Son(Father):
def __init__(self,area,name,gender):
self.area = area
#Father.__init__(self,name,gender) #传入self
super(Son,self).__init__(name,gender) #调用父类
def hall(self): #同名调用时调用子类
print('1111')
pass
a = Son('zu an','jinx','women')
print(a.name,a.gender,a.get_name())
Son.hall('2')