# 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)版权声明:本文为u010764629原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。