Python学习之路:面向对象补充

1、什么是面向对象编程?

---以前使用函数

---类+对象

2、什么是类什么是对象,又有什么关系?

class 类:

  def 函数1():

    pass

  def 函数2():

    pass

#obj 是对象,实例化的过程

obj = 类()

obj.函数1()

########## 面向对象不好 #########

########## 函数编程好 ###########

有时候,函数编程能实现,比较麻烦;

面向对象可以非常简短快速的实现;

3、什么时候适用面向对象?

---如果多个函数需要传入多个共同参数时,可将多个参数封装到面向对象

---根据一个模板创建某些东西的时候

---应用场景

#分别采用面向对象和函数的方法实现“连接服务器、上传文件和执行命令、关闭连接的功能”
class SSH:
    def __init__(self,host,port,pwd,username):
        self.host = host
        ...
    def connection(self):
        # 创建连接
        self.conn = 和雾浮起创建的链接对象()

    def close(self):
        # 关闭
        self.conn.关闭

    def upload(self):
        self.conn.使用链接上传文件

    def cmd(self):
        self.conn.使用链接执行命令

obj = SSH(...)
obj.connection()
obj.upload()
obj.cmd()
obj.close()

#-----------------函数式编程-------------------
def upload():
    # 连接服务器
    # 上传文件
    # 关闭服务器

def cmd():
    # 连接服务器
    # 执行命令
    # 关闭服务器

 4、self就是调用当前方法的对象

---静态字段的适用场景,每个对象中保存相同的东西时,可以使用静态字段

class Foo:
    #静态字段
    #公有属性
    country = "中国"
    def __init__(self,name,count):
        # 普通字段
        # 普通属性
        self.NAME = name
        self.count = count
       # self.country = "中国"

    def bar(self):
        pass

obj1 = Foo("河南",100000)
obj1.bar()
obj2 = Foo("山东",120000)
obj2.bar()

 5、封装

----类中封装了:字段、方法;

----对象中封装了:普通字段(普通属性)的值;

#---------封装---------------
class F1:
    def __init__(self,n):
        self.N = n
        print('F1')

class F2:
    def __init__(self,arg1):
        self.a = arg1
        print('F2')

class F3:
    def __init__(self,arg2):
        self.b = arg2
        print('F3')

o1 = F1("Alex")
o2 = F2(o1)
o3 = F3(o2)
###输出Alex###
#o3.b ==> o2
#o2.a ==> o1
o3.b.a.N

   继承

 

###-------继承######
class F1:
    def __init__(self):
        print('F1')

    def a1(self):
        print('F1a1')

    def a2(self):
        print('F1a2')

class F2(F1):
    def __init__(self):
        print('F2')

    def a2(self):
        self.a2()
        print('F2a2')

class F3(F2):
    def __init__(self):
        print('F3')

    def a2(self):
        print('F3a2')

obj = F3()
obj.a2()
obj.a1()

 

 多态(多种形态):

 

6、字段:

    普通字段(保存在对象中)

    静态字段(保存在类中)

方法:

    普通方法(保存在类中,调用者是对象)

    静态方法(保存在类中,调用者是类,无需创建对象,可以有任意个参数)

 

###-------静态方法######
class F1:
    @staticmethod
    def a1(a1,a2):
        print('Alex')
F1.a1(1,2)

 

 

 

     

posted @ 2018-01-23 14:24  Py小白  阅读(156)  评论(0编辑  收藏  举报