1 什么是对象?
对象(Object)是一个应用系统中的用来描述客观事物的实体,是有特定属性和行为(方法)的基本运行单位。是类的一个特殊状态下的实例。对象可以是一个实体、一个名词、一个可以想象为有自己标识的任何东西,可以概括来说: 万物皆对象。
2 面向对象的三大特征
封装、继承、多态
2.1 封装:
封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
提高程序的安全性在方法内部对属性进行操作,在类对象的外部调用方法。无需关心方法内部的具体实现细节,从而隔离了复杂度。
2.1.1 君子协议
伪私有属性,君子协议不希望在类对象外部被访问,却可以强制访问
2.1.2 伪装
使用__双下划线伪装
def __init__(self,name,age):
sef.name=name
self.__age=age
2.1.3 强制访问
通过print(dir(实例对象名))查找属性名,后强制访问
2.2 继承:
面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。
目的:提高代码的复用性。
2.2.1 继承实例
class Person (object):
def __init__(self,name,age):
self.name=name
self.age=age
class Student(Person):
def __init__(self,name,age,no):
super().__init__(name.age):
self.stu_no=stu_no
class Student(Person):
def __init__(self,name,age,teacheryear):
super().__init__(name.age):
self.teacheryear=teacheryear
stu.info()
teacher.info()
2.2.2 方法重写
对父类的方法不满意,可在子类中对方法体重写。
def info(self): #重写
super().info() #调用父类方法
print('学号:{0}').format(self.score)
2.2.3 object类
object类是所有类的父类,因此所有类都有object类的属性和方法。
如内置函数dir()可以查看指定对象所有属性
如object有一个__str__()方法,用于返回一个对于“对象的描述”,对应于内置函数str()经常用于print()方法,帮我们查看对象的信息,所以我们经常会对_str_()进行重写
2.3 多态:
多态指同一个实体同时具有多种形式。同字面意思,及一个对象在不同的情况下会有不同的体现。
提高程序的可扩展性和可维护性,动态语言只关心类中有没有这个方法,有就可以执行,不关心父子关系
标签:__,name,Python,age,--,init,对象,self From: https://blog.51cto.com/husheng/6036060