面向对象
面向对象( 0bject 0riented )是软件开发方法,是一种程序设计规范,是一种对现实世界理解和抽象的方法。在面向对象编程思想中,一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象。
总的来说面向对象编程,一是属性,二是方法。
面向对象术语
1.类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例
2.方法:类中定义的函数
3.类变量(属性):类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体(方法)之外。类变皇通常不作为实例变量使用,类变量也称作属性
4.数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据
5.方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
6.实例变量:定义在_init__方法中的变量,只作用于当前实例的类
7.继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待,以普通的类为基础建立专门的类对象
8.实例化:创建一个类的实例,类的具体对象。一个类可以实例化出无数个对象
9.对象:通过类定义的数据结构实例。
实例演示
1、定义一个Rectangle矩形类
(1)两个名为width和height的数据域,它们分别表示矩形的宽和高。width和height的默认值都为1。
(2)创建矩形的参构造方法。
(3)一个创建width和height为指定值的矩形的构造方法。
(4)一个名为getArea()的方法返回这个矩形的面积。
(5)一个名为getPerimeter()的方法返回周长。
class Rectangle: #两个名为width和height的数据域,它们分别表示矩形的宽和高。width和height的默认值都为1。 height = 1 width = 1 def __init__(self, w, h): self.width = w self.height = h def getArea(self): return self.height * self.width def getPerimeter(self): return (self.height + self.width) * 2 # def getHeight(self): # return self.height # # def getWidth(self): # return self.width class ShiYan: if __name__ == '__main__': test = Rectangle(4, 3) print(test.getArea()) print(test.getPerimeter())
类继承
通过继承,新类可以获取现有类的属性和方法,新类称作子类或派生类,被继承的类称作父类、基类或超类。在子类中可以定义新的属性和方法,从而完成对父类的扩展。
实例:
通过一个对象返回一个Class对象,获取该对象所属类的名称以及父类的名称。
class Student: def __init__(self, name, sex, age): self.name = name self.sex = sex self.age = age class Student1(Student): def __init__(self, name, sex, age, id): super().__init__(name, sex, age) self.id = id def show_info(self): # 重写父类方法 print(f"name: {self.name}, age:{self.age}, sex:{self.sex}, stu_id:{self.id}") class XiaoMing(Student): def __init__(self, name, sex, age, id): super().__init__(name, sex, age) self.id = id # class ShiYan(): if __name__ == '__main__': a = Student1("小红", "女", 18, 1) # b = XiaoMing("小明", "男", 20, 2) # 通过类的对象返回类的名字 print(type(a).__name__) # 给定一个类的对象a,要求获取该对象的父类 print(a.__class__.__bases__[0].__name__)