面向对象中类,方法和三大特性
1、如何创建类
class 类名:
pass
2、创建方法
构造方法,__init__(self,arg)
obj = 类('a1')
普通方法
obj = 类(‘xxx’)
obj.普通方法名()
3、面向对象三大特性之一:封装
class Bar:
def __init__(self, n,a):
self.name = n
self.age = a
self.xue = 'o'
b1 = Bar('alex', 123)
b2 = Bar('eric', 456)
4、适用场景:
如果多个函数中有一些相同参数时,转换成面向对象
class DataBaseHelper:
def __init__(self, ip, port, username, pwd):
self.ip = ip
self.port = port
self.username = username
self.pwd = pwd
def add(self,content):
# 利用self中封装的用户名、密码等 链接数据
print('content')
# 关闭数据链接
def delete(self,content):
# 利用self中封装的用户名、密码等 链接数据
print('content')
# 关闭数据链接
def update(self,content):
# 利用self中封装的用户名、密码等 链接数据
print('content')
# 关闭数据链接
def get(self,content):
# 利用self中封装的用户名、密码等 链接数据
print('content')
# 关闭数据链接
s1 = DataBaseHelper('1.1.1.1',3306, 'alex', 'sb')
# 创建类,对类进行封装 class bar: # 构造方法 def __init__(self, name, age): self.name = name self.age = age def foo(self, arg): print(self.name, self.age, arg) obj = bar("小明", 18) obj.foo("这是个类")
5、面向对象三大特性之二:继承
1、继承
class 父类:
pass
class 子类(父类):
pass
2、重写
防止执行父类中的方法
3、self永远是执行改方法的调用者
4、
super(子类, self).父类中的方法(...)
父类名.父类中的方法(self,...)
# 父类 class F: def f1(self): print("F.f1") def f2(self): print("F.f2") # 子类 ,子类继承父类 class S(F): def s1(self): print("S.s1") # 不继承父类方法时,子类重写方法 def f2(self): print("S.f2") super(S, self).f2() # 执行父类中的方法 F.f2(self) # 第二种执行父类中的方法 inherit = S() # 子类可以调用父类 inherit.f1() inherit.s1() inherit.f2()
5、Python中支持多继承
a. 左侧优先
b. 一条道走到黑
c. 同一个根时,根最后执行
class F0: def __init__(self): print("F0.init") class F1(F0): def __init__(self): print("F1.init") F0.__init__(self) def f1(self): print("F1.f1") self.f2() # F2.f2 因为self是子类的对象,所以从子类开始找方法 def f2(self): print("F1.f2") class F2: def f2(self): print("F2.f2") # python中可以多继承,顺序从左到右依次找父类,如果有相同根类,则根类最后执行 class S0(F2,F1): pass Multiple_inherit = S0() # 创建对象,先执行init方法 Multiple_inherit.f1()
6、面向对象三大特性之三:多态
====> 原生多态
# Java
string v = 'alex'
def func(string arg):
print(arg)
func('alex')
func(123)
# Python
v = 'alex'
def func(arg):
print(arg)
func(1)
func('alex')