函数编程VS面向对象编程

#第二次

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def foo(self, content):
        print(self.name,self.age,self.gender,content)

obj = Bar()
obj.name = '小明'
obj.age = 10
obj.gender = '男'
obj.foo('上山去砍柴')
obj.foo('开车去东北')
obj.foo('最爱大保健')

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
小明 10 男 上山去砍柴
小明 10 男 开车去东北
小明 10 男 最爱大保健

Process finished with exit code 0

#封装

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def add(self,content):
        print(self.name,self.age,self.gender,content)

    def delete(self,content):
       print(self.name,self.age,self.gender,content)

    def update(self,content):
        print(self.name,self.age,self.gender,content)

    def get(self,content):
      print(self.name,self.age,self.gender,content)

obj = Bar()
obj.name = '小明'
obj.age = 10
obj.gender = '男'	#中间人封装到对象里面叫封装,把值封装到对象里面

obj.add('上山去砍柴')
obj.delete('开车去东北')
obj.update('最爱大保健')

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
小明 10 男 上山去砍柴
小明 10 男 开车去东北
小明 10 男 最爱大保健

Process finished with exit code 0

#构造方法

特殊作用:

  在

    obj = 类名()

      #创建对象

      #通过对象执行类中的一个特殊方法

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def __init__(self):    #构造方法,构造方法特性,类名()自动执行构造方法
        print('123')

z = Bar()
print(z)

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
123
<__main__.Bar object at 0x7fcd523e73d0>

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def __init__(self):
        print('123')
    def foo(self):
        print('456')

z = Bar()
print(z)
z.foo()

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
123
<__main__.Bar object at 0x7f81020603d0>
456

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def __init__(self,name,age): #构造方法,self=z,name='alex',age=84
        print('123')
        self.n = name
        self.a = age
    def foo(self):
        print('456')
z = Bar('smoke',84)
print(z)
z.n = 'smoke'
z.a = 18

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
123
<__main__.Bar object at 0x7fdd008ed3d0>

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

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

z = Bar()
z.name='smoke'
z.foo()

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
smoke

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def __init__(self):
        self.name='smoke'
    def foo(self):
        print(self.name)

z = Bar()
z.foo()

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
smoke

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def __init__(self,n1,n2,n3):
        self.name1=n1
        self.name2=n2
        self.name3=n3
        self.name4=n3
        self.name5=n3
        self.name6=n3
    def foo(self):
        print(self.name1)

z = Bar(1,2,3)
print(z.name1)
z.foo()

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
1
1

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def __init__(self,n1,n2,n3):
        self.name1=n1
        self.name2=n2
        self.name3=n3
        self.name4=n3
        self.name5=n3
        self.name6=n3
    def foo(self):
        print(self.name1,self.name2,self.name3,self.name4,self.name5,self.name6)

z = Bar(1,2,3)
print(z.name1)
z.foo()

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
1
1 2 3 3 3 3

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Person:
    def __init__(self,name,age):
        self.n = name
        self.a = age
    def show(self):
        print('%s-%s' %(self.n,self.a))
lihuan = Person('lihuan',18)
lihuan.show()
hu = Person('cherry',73)
hu.show()

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
lihuan-18
cherry-73

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def __init__(self,n,a,g):
        self.name = n
        self.age = a
        self.gender = g
    def add(self,content):
        print(self.name,self.age,self.gender,content)

    def delete(self,content):
       print(self.name,self.age,self.gender,content)

    def update(self,content):
        print(self.name,self.age,self.gender,content)

    def get(self,content):
      print(self.name,self.age,self.gender,content)

obj = Bar('小明',10,'男')

obj.add('上山去砍柴')
obj.delete('开车去东北')
obj.update('最爱大保健')

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
小明 10 男 上山去砍柴
小明 10 男 开车去东北
小明 10 男 最爱大保健

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author:smoke
# file:object_oriented.py
# time:2021/02/19

class Bar:
    def __init__(self,name,age,gender):
        self.n = name
        self.a = age
        self.g = gender
        self.xue = 'O'  #血型,大家有相同血型,固定,不需要传值,直接写死
    def add(self,content):
        print(self.n,self.a,self.g,self.xue,content)

    def delete(self,content):
        print(self.n,self.a,self.g,self.xue,content)

    def update(self,content):
        print(self.n,self.a,self.g,self.xue,content)

    def get(self,content):
        print(self.n,self.a,self.g,self.xue,content)

obj = Bar('小明',10,'男')

obj.add('上山去砍柴')
obj.delete('开车去东北')
obj.update('最爱大保健')

/usr/bin/python3.8 /home/smoke/PycharmProjects/pythonProject/lean_python/object_oriented.py
小明 10 男 O 上山去砍柴
小明 10 男 O 开车去东北
小明 10 男 O 最爱大保健

Process finished with exit code 0

总结:

1、如何创建类

  class 类名:

    pass

2、构建方法

  构造方法,__init__

    obj = 类()

  普通方法

    obj = 类('xxx')

    obj.普通方法名()

3、面向对象三大特性之一:封装

class Bar:

  def __init__(self,n,a)

    self.name = n

    slef.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):

    print(self.n,self.a,self.g,self.xue,content)

  def update(self,content):

    print(self.n,self.a,self.g,self.xue,content)

  def get(self,content):

  print(self.n,self.a,self.g,self.xue,content)

s1 = DataBaseHelper('1.1.1.1',3306,'alex','sb')