面向对象补充

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

  - 以前使用函数

  - 用类和对象 来实现功能

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

  class  类:

    def 函数1():

      pass

    def 函数2():

      pass

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

  obj = 类()

  obj.函数1()

 ===============面向对象不好=====================

 ===============函数编程好

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

 面向对象非常的就能实现

 

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

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

   - 如果多个函数须传入多个共同的参数时

 

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

 

 

class Foo:
    #静态字段
    country = "中国"

    def __init__(self,name,count):
        #普通字段
        self.NAME = name
        self.Count = count

    def bar(self):
        pass

obj1 = Foo('河南',1000000)
obj1.bar()

obj2 = Foo('山东',10000)
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 ################

print(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 a1(self):
        self.a2()
        print('F2a1')
    def a2(self):
        print('F2a2')
class F3(F2):
    def __init__(self):
        print('F3')
    def a2(self):
        print('F3a2')


obj = F3()  
obj.a1()  

执行步骤及输出结果如下:

 

多态:多种形态

  Python里面默认支持多态

  接口重用,一种接口,多种实现

 

6,

  字段:

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

    静态字段(保存在类中)

  方法:

    普通方法(保存在类中,创建对象,调用者是对象,至少要有self参数)

 

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

 

 

静态方法:

  只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性

 

class Dog(object):

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

    @staticmethod   
    def eat():
        print("%s is eating %s" %('sss','dd'))

d = Dog("ChenRonghua")
d.eat()

 

类方法:

  只能访问类变量,不能访问实例变量

class Dog(object):
    name = "huazai"
    def __init__(self,name):
        self.name = name

    # @staticmethod
    @classmethod
    def eat(self):
        print("%s is eating %s" %(self.name,'dd'))

d = Dog("ChenRonghua")
d.eat()

 

属性方法:

  把一个方法变成一个静态属性

  具体没听懂,哈哈

 

动态导入模块:

  

 

posted @ 2017-09-12 17:08  _Cohen  阅读(161)  评论(0)    收藏  举报