面向对象之基本概念 封装、单多继承

面向对象:类,对象
函数写在类里面,一定要加self
例:

class foo:
	# 函数在类里面-->方法
	def mail(self, email, message):
		return Ture
		
# 调用
# 1. 创建对象,类名(),例如:obj = foo()
# 2. 通过对象去执行方法,例如:obj.mail()

类和对象

  1. 创建类
class 类名:
	def 方法名(self,xxxx):
		pass
  1. 创建对象
    对象 = 类名()
  2. 通过对象执行方法
    对象.方法名()
  3. 对象是由类创建的,对象执行方法,根据类对象指针进入对象找到方法
  4. self怎么理解
    self是一个python会自动传递的参数
    哪个对象执行方法,self就是谁
  5. 构造方法
    类中有一个特殊的方法__init__,类()-->类名加括号<--自动被执行
  6. 面向对象三大特性
    封装,继承,多态
    • 封装在对象里面,如模拟人生设计中,人物基本信息(姓名、年纪等)封装在self中。
    • 多态在python中用不到

6--实例

class SQLHelper:
    def __init__(self, a1, a2, a3):
        print("自动执行init")
        # 以下进行封装
        self.hhost = a1
        self.uusername = a2
        self.pwd = a3


    def fetch(self, sql):
        pass
    def crear(self, sql):
        pass
    def remove(self, id):
        pass
    def modify(self, name):
        pass

# obj1 = SQLHelper()  # 加括号自动执行__init__方法,同时self为obj1
obj1 = SQLHelper("a.com", "jack", 123)  # 进行self封装  构造了方法,创建对象的过程--利用__init__构造方法
obj1.fetch("select xxxx")  # 进行调用
# obj2 = SQLHelper()  # 加括号自动执行__init__方法,同时self为obj2

什么时候用面向对象

当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可。

在类中,无上下顺序,可以提点调用

7--多层封装实例:

class c1:

    def __init__(self, name, obj):
        self.name = name
        self.obj = obj

class c2:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show(self):
        print(self.name)
        return 123

class c3:
    def __init__(self, a1):
        self.money = 123
        self.aaa = a1


c2_obj = c2('aa', 11)
# c2_obj是c2类型 封装了 name age
# - name = "aa"
# - age = 11
c1_obj = c1("alex", c2_obj)
# c1_obj.obj.name-->c2中的年纪 就是c1_obj.obj==c2_obj
# c1_obj 是c1 类型
# - name = "alex"
# - obj = c2_obj
c3_obj = c3(c1_obj)
# 使用c3_obj执行show方法
ret = c3_obj.aaa.obj.show()
print(ret)

多层封装实例图解如下:

继承实例1:(继承<==>将父类中的方法复制到子类中)

class F1: # 父类,基类
    def show(self):
        print('show')

    def foo(self):
        print(self.name)

class F2(F1): # 子类,派生类
    def __init__(self, name):
        self.name = name

    def bar(self):
        print('bar')
    def show(self):
        print('F2.show')

obj = F2('alex')
# obj.show()
obj.foo()  # 打印出alex  继承父类的方法,相当于父类的方法写入子类中

继承实例2:

面向对象之多继承

左侧优先级高于右边,从左侧逐渐向父类查找,找到底再从右侧寻找
多继承实例:


寻找方法 都是从自己先查找,首先查找init方法
例子:

原文地址:https://www.cnblogs.com/qpzm/p/6077189.html