面向对象知识点总结

Posted qimisun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象知识点总结相关的知识,希望对你有一定的参考价值。

python是一门动态强类型语言:
弱类型体现在传参的时候不用指定数据类型,
强类型体现在比如 2+"str"会报数据类型错误

python不崇尚根据继承所得来的相似,比如tuple和list的方法已经非常相似了,却还是各自独立的方法
这就是python崇尚的鸭子类型,优点是松耦合。


三种编程模式:面向过程编程、面向函数编程、面向对象编程
面向对象设计模式:优点是解决了程序的可扩展性,缺点是可控性差
面向对象的三大特性:继承、多态、封装

类中的静态变量可以被类和对象调用
类变量中对于不可变数据类型最好用类名操作,而不用对象操作
如果用对象操作:
类变量中如果是不可变数据类型,重新赋值是独立的,
类变量中如果是可变数据类型,修改值是共享的

当对象去调用方法的时候,就是把这个对象的值传递给这个方法了
导入一个模块的时候就像是实例化了一个对象,会调用这个模块的__init__方法

组合:一个对象的属性值是另外一个类的对象

继承:
子类.__bases__可以查看父类名字
父类中没有,在子类中出现的属性叫做派生属性
父类中没有,在子类中出现的方法叫做派生方法
子类的对象调用:
只要是子类中有的名字一定先用子类的,子类中没有才用父类的,父类中也没有就报错
如果子类父类都有,优先使用子类的,如果还想用父类的,就得再单独调用父类的

super()方法的使用:
不是单独的找父类,而是根据继承顺序以广度优先来找的
class Base(object):
def __init__(self, name, age):
self.name = name
self.age = age
class temp(Base):
def __init__(self, name, age, sex):
super().__init__(name, age)
self.sex = sex

新式类的继承顺序都是广度优先
经典类的继承顺序都是深度优先
mro():
查看一个类的父类继承顺序

多态:
python天生支持多态

class Alipay:
def pay(self, money):
print("用支付宝支付了{}元".format(money))


class Wepay:
def pay(self, money):
print("用微信支付了{}元".format(money))


a = Alipay()
w = Wepay()


def pay(pay_obj, money):
pay_obj.pay(money)


pay(a, 200)
pay(w, 30)

上面的例子可以看出,调用pay方法的时候
如果是java强类型语言,
必须再创造一个类,让Alipay和Wepay都继承,
而在python中就不用,而是可以直接传Alipay类或者Wepay类

封装:
在类内部可以创造私有静态属性、私有属性、私有方法、
私有静态属性、私有属性、私有方法 只能在类内部使用
如果在类外部调用私有,通过 _类名__私有属性 调用















































































以上是关于面向对象知识点总结的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 面向对象开发知识基础总结

面向对象向知识总结

面向对象C++奇奇怪怪的知识点总结

oop面向对象知识点总结

PHP面向对象知识点总结

java面向对象编程知识点总结