面向对象补充
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()
属性方法:
把一个方法变成一个静态属性
具体没听懂,哈哈
动态导入模块:


浙公网安备 33010602011771号