Python学习十一 面向对象编程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_43426335/article/details/100532801

面向对象编程OOP

类和实例

面向对象的设计思想是抽象出class
面向对象的抽象程度比函数要高
面向对象的三大特点是封装,继承和多态

类和实例

类是抽象的模板,实例是根据类创建出来的一个个具体对象
类class
calss后面紧接类名

class Student(object):
	pass

实例instance
创建实例是通过类名加()实现
init(注意init前后分别有两个下划线)

数据封装

通过实力上的调用,我们直接操作了对象内部数据,但无需知道方法内部的实现细节

访问和限制

如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__就变成了一个私有变量private,这样就确保了外部代码不能随意修改对象内部的状态,这样通过访问限制的保护,代码更加强壮。如果外部代码要获取,可以增加get_name(),get_score()这样的方法
如果又要允许外部代码修改score,可以再给student类增加set_score方法:

一个下划线开头的实例变量名,比如_name,这样的实例变量外部是可以访问的,但是按照约定俗称的规矩,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是请把我看成私有变量,不要随意访问”。

继承和多态

子类,父类(基类,超类)
继承的好处,子类获得了父类的全部功能,还可以对子类增加一些方法
当子类和父类都存在相同的run()方法时,我们说,子类的run()会覆盖父类的run(),在代码运行的时候,总是会调用子类的run()这样,我们就获得了继承的另一个好处:多态。

判断一个变量是否是某个类型可以用isinstance()判断
如果继承关系中,实例数据类型是某个子类,那他的数据类型也是父类,反过来就不行,即dog 可以看成是Animal类,但Animal类不能看成是dog类

获取对象信息

实例属性和类属性

猜你喜欢

转载自blog.csdn.net/qq_43426335/article/details/100532801
今日推荐