# coding=utf-8 import logging ''' 类定义,class,python在同于个文件内的代码顺序很强,要求父类先定义在子类之前文本; python中在同一个方法内定义的变量在整个方法内都可以见,作用域较广;属于弱作用域。''' class people: # 定义基本属性,类变量 name = '' #Public 类型属性 age = 0 #Public 类型属性 _salary=100000 #protected属性,只能子类和父类访问,子类可以访问 __weight = 0 # private 定义私有属性,私有属性在类外部无法直接进行访问,子类也不能访问 # 定义构造方法 def __init__(self, n, a, s, w): self.name = n #类变量初始化 self.age = a #类变量初始化 self._salary = s #类变量初始化,子类可以访问 self.__weight = w #类变量初始化,子类也不能访问 self.high = 175 #构造方法内额外声明成员变量,并初始化 self.fun(6) #构造函数内调用函数 def fun(self,val = 4): #带默认参数的普通函数 self.english_level = val #在构造函数内调用普通函数初始化的成员变量 def _dance(self): #protected的函数,子类可以访问 print('dance%' (self.name, self.age)) def __sing(self): #private的函数,子类也不能访问 print('唱歌-----') def memfuntion1(self, val=400): #带默认参数的普通函数 localval3 = 300 # 函数内部的局部变量 self.nmval4 = val #非成员变量,因为没有在构造函数内调用改函数 self.nmval5 = 500 #非成员变量,因为没有在构造函数内调用改函数 def speak(self): print("%s 说: 我 %d 岁。" % (self.name, self.age)) ''' 单继承示例;如果是多继承,可以在括号内写多个父类''' class student(people): grade = '' #子类特有属性 def __init__(self, n, a, s, w, g): # 首先需要调用父类的构函 people.__init__(self, n, a, s, w) self.grade = g #子类特有属性初始化 # 覆写父类的方法 def speak(self): print("%s 说: 我 %d 岁了,我在读 %d 年级" % (self.name, self.age, self.grade)) class person(people): grade = '' # 子类特有属性 def __init__(self,s): self.grade = s def speakf(self): print("%s 说: 我 %d 岁了,我在读 %d 年级" % (self.name, self.age, self.grade)) def fun(): #弱作用域体现 for a in arange(5): m = "hello" if m == "hello": if a == 1: s7 = {1, 2, 3, 5} print(m) #这里可以输出m变量 return s7 #这里可以返回s7变量 if __name__ == '__main__': s = student('ken', 10, 60,100000, 3) s.speak() s = person("sssssss") print(s) b = people("dfb", 2, 3, 5) print(b)
python的弱作用域体现
最新推荐文章于 2024-04-01 15:52:12 发布