面向对象(Object Oriented)设计思想贯穿程序设计,面向对象编程(Object Oriented Programming)是针对大型软件设计提出的,它能使代码更好滴复用,使程序更加的灵活。对象 是一个抽象的概念,万事万物皆可对象。对象通常可划分为两个部分,静态部分 和 动态部分 ;【静态部分】称之为 属性,【动态部分】称之为 == 方法== 。
面向对象编程中,将函数和变量进一步封装成类,类才是程序的基本元素,它将数据和操作紧密连接,并保护数据不被外界意外改变。
GitHub代码commits id:70eb1f2
面向对象中常用术语:
(1)类(class):用来描述具有相同属性和方法的对象集合,定义了该集合中每个对象所共有的属性和方法,其中对象被称为类的实例;
(2)实例:也称对象,通过类定义的初始化方法赋予具体的值;
(3)实例化:创建类的实例的过程;
(4)实例变量:定义在实例中的变量,只作用于当前实例;
(5)类变量:类变量是所有实例公有的变量。类变量定义在类中,但在方法体之外;
(6)数据成员:类变量、实例变量、方法、类方法、静态方法和属性等的统称;
(7)方法:类中定义的函数;
(8)静态方法:不需要实例化就可以有类执行的方法;
(9)类方法:类方法是将类本身作为对象进行操作的方法;
(10)方法重写:从父类继承的方法不能满足子类的需求,可以对父类的方法进行重写;
(11)继承:一个派生类继承父类的变量和方法;
(12)多态:根据对象类型的不同以不同的方式进行处理
# 1. 类
class OOPObject(object):
# 5.类变量:定义在类中,方法之外的变量
phone = 123456789
address = "memory"
# __init__方法的类在实例化的时候,会自动调用该方法,并传递对应的参数
def __init__(self, name, age):
# 4.实例变量,name 和 age就是实例变量
self.name = name
self.age = age
# 7.实例方法
def o_method(self):
print("{0}:{1}".format(self.name, self.age))
# 8.静态方法:不需要实例化就可以有类执行的方法
@staticmethod
def static_method():
print("我是静态方法")
# 9.类方法:类方法是将类本身作为对象进行操作的方法
# 采用@classmethod装饰,至少传入一个cls(指类本身,类似于self)参数。
# 执行类方法时,自动将调用该方法的类赋值给cls。
# 使用类名.类方法的调用方式(也可以使用实例名.类方法的方式调用)
@classmethod
def class_method(cls):
print("我是类方法")
# 2.实例
# 3.实例化---这个过程
o1 = OOPObject("oj", 23)
# 实例方法的调用
o1.o_method()
# (6)数据成员:类变量、实例变量、方法、类方法、静态方法和属性等的统称
# 静态方法的调用
OOPObject.static_method()
# 类方法
OOPObject.class_method()