一、回顾有关Python中类的相关知识
- 创建类时类名要大写。
如:class Fish():
- self相当于c++中的this指针,当不同的对象引用类中元素时不会混淆、覆盖或冲突
并且必须加上self _init_(self,x)
可理解为构造函数,(2、3举例如下)
In [37]:
class Fish():
def _init_(self,name):
self.name = name #定义名字
def get_nameage(self,age): #传参年龄,年龄为形参,并非类中所属元素
print(self.name + "+" + str(age))
a = Fish()
a.name = 'xixi'
a.get_nameage(11)
b = Fish()
b.name = 'haha'
b.get_nameage(12)
[结果]:
xixi+11
haha+12
- 公有与私有
变量名前加两个下划线就变成私有如:__name
就成了私有
但是其实python的私有是虚假的私有。通过对象名._类名__变量名
即可访问私有变量
如a._Fish__name
- 继承
若子类重写父类的方法,会将其覆盖
如果不想覆盖,可使用super().函数名() 这部分还有点问题明天回顾一下
(有关super()的补充)
class SchoolMember:
def __init__(self,name,age,addr,hoppy):
self.name = name
self.age = age
self.addr = addr
self.hoppy = hoppy
print('初始化的名字是%s'%self.name)
def tell(self):
print('姓名:%s,年龄:%s,地址:%s,爱好:%s'%(self.name,self.age,self.addr,self.hoppy))
class Teacher(SchoolMember):
def __init__(self,name,age,addr,hoppy,salary):
super().__init__(name,age,addr,hoppy) #super后面的函数里面不加self!!!!
self.salary = salary
print('继承SchoolMember传入的名字:%s'%self.name)
def tell(self):
super().tell()
print('我的工资一般是:%s\n'%self.salary)
class Student(SchoolMember):
def __init__(self,name,age,addr,hoppy,marks):
super().__init__(name,age,addr,hoppy)
self.marks=marks
print('我是继承SchoolMember学生%s'%self.name)
def tell(self):
super().tell()
print('我这次的成绩是:%d'%self.marks)
t = Teacher('dcy','40','河南郑州','旅游',3000)
t.tell()
s = Student('mxl',22,'上海','导游',85)
s.tell()
运行结果为:
初始化的名字是dcy
继承SchoolMember传入的名字:dcy
姓名:dcy,年龄:40,地址:河南郑州,爱好:旅游
我的工资一般是:3000
初始化的名字是mxl
我是继承SchoolMember学生mxl
姓名:mxl,年龄:22,地址:上海,爱好:导游
我这次的成绩是:85
二、回顾Sql注入原理
- union注入注意位数要一致且注释掉后面的内容;
- MySQL内置函数学习;
- 注入是指用户的输入进入解释器并被执行
解释器:是一条一条执行语言的
编译器:是将源代码整个编译成目标代码,执行时不在需要编译器,而是直接在支持目标代码的平台上运行,这样执行效率比解释执行快很多。如:C语言代码被编译成二进制代码(exe程序),在windows平台上执行。
更通俗化的解释见解释器预编译器的区别