python基本知识:面向对象,继承
Posted lancelotxly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基本知识:面向对象,继承相关的知识,希望对你有一定的参考价值。
‘‘‘
面向对象编程:
1. POP, OOD, OOP
2. 类与实例
3. 继承: 单继承, 接口继承与多态, 多继承
4. 封装
5. 反射(获取信息, 命令分发, 动态加载模块)
‘‘‘ # 综述
‘‘‘
POP & OOD & OOP:
1. POP(Process Oriented Programming, 面向过程编程): 将一个过程分为几个子过程来完成
2. OOD(Object Oriented Design, 面向对象设计): 通过定义函数实现‘obj = data + method‘
3. OOP(Object Oriented Programming): 定义类 + OOD
‘‘‘ # POP & OOD & OOP
# OOD
def Object_func(attr1, attr2):
def init(attr1, attr2):
obj = {
‘func1‘: func1,
‘func2‘: func2,
‘attr1‘: attr1,
‘attr2‘: attr2
}
return obj
def func1(): pass
def func2(): pass
return init(attr1, attr2)
obj = Object_func(‘xzq‘, 12)
obj[‘func1‘]()
attr1 = obj[‘attr1‘]
‘‘‘
类和实例:
1. 定义类
class ClassName(father):
class_v1 = v1 # 类属性
class_v2 = v2
def __init__(self,a,b): # 实例属性
self.a = a
self.b = b
def func1(self): pass # 实例方法, 所有实例共有
2. 实例化
obj = ClassName(a,b)
实例化过程: 执行元类__call__()方法, 详细见MetaClass.py
1. 调用Object.__new__(self)方法创建一个实例t
2. 调用ClassName.__init__(t)方法初始化实例
3. 返回初始化好的t, 赋值给obj
3. 访问属性: 只能通过obj或ClassName访问
1) obj访问属性(data+method):
obj.attr: 1> 搜索__init__()内部
2> 然后在class内部搜索
*当obj调用func(self,a,b)类内部方法时, 会自动传参self
2. Class访问属性(data+method):
ClassName.attr: 1> 不能访问obj.attr, 即不会在__init__()中搜索, 直接在class内部搜索
* 当ClassName调用func(self,a,b)类方法时, 需要手动传入self, 也就是需要手动传入一个对象obj
4. 绑定属性:
1)obj绑定属性: 对象应该只有data, 不应该有自己独立的method
1> 绑定data: obj.data = value
2> 绑定method:
def func(self): pass
方式一: obj.func = func
obj.func(obj) # 调用时需要手动传入self, 因为该方法是属于当前obj的, 只有实例方法才会自动传入self
方式二: obj.func = types.MethodType(func,obj)
obj.func() # 可正常调用
2)Class绑定属性
1> 绑定data: ClassName.data = value
2> 绑定method:
# 绑定实例方法
def func(self): pass
ClassName.func # 绑定后所有实例都可以使用, 包括绑定前生成的实例
5. 静态属性, 类方法, 静态方法
1) 静态属性: 将method打包成data,