一、面向对象简介
1、面向对象不是所有的情况都适用
2、面向对象编程
a.定义类
class 类名:
def 方法1(self, 参数名):
方法体
b.根据类创建对象,使用对象去执行类中的方法
obj = 类名()
obj.方法名
3、self,形参,python内部传递
4、函数式编程与面向对象式编程的区别
示例:
#!/usr/bin/env python # -*- coding:utf-8 -*- """ 面向对象编程初识 """ #先定义一个类 class Hello(): #定义一个方法 def sayHell(self, name): print(‘欢迎您!‘ + name) #创建一个对象 obj = Hello() obj.sayHell(‘yusheng_liang‘)
二、面向对象--封装
应用场景:
1、当同一类型的方法具有相同参数时,直接封装到对象即可
2、把类当做模板,创建多个对象(对象内封装的数据可以不一样)
3、类名+括号
自动执行类中的__init__方法:创建了一个对象
在__init__方法中执行具体封装的操作
__init__有一个特殊名字:构造方法(初始化)
示例一:面向对象之封装,非主流的方式
#!/usr/bin/env python # -*- coding:utf-8 -*- """ 封装,非主流的方式 """ class Foo(): def add_foo(self): print(self.name) #打印已经封装好的对象属性 def del_foo(self): print(self.name) #创建一个对象 obj1 = Foo() #在对象中封装数据 obj1.name = ‘yusheng_liang‘ #执行方法,执行过程中可以根据self去obj1中取已经封装在里面的数据 obj1.add_foo()
示例二:面向对象之封装,使用构造方法的方式封装数据
#!/usr/bin/env python # -*- coding:utf-8 -*- """ 封装,使用构造方法的方式封装数据 """ class Foo(): def __init__(self, args): """ 构造方法 :param args: """ self.name = args def add_foo(self): print(self.name) #打印已经封装好的对象属性 def del_foo(self): print(self.name) #创建一个对象,实例,并且将yusheng_liang封装到对象中 obj1 = Foo(‘yusheng_liang‘) # #在对象中封装数据 # obj1.name = ‘yusheng_liang‘ #执行方法,执行过程中可以根据self去obj1中取已经封装在里面的数据 obj1.add_foo()
三、面向对象--继承
1、派生类可以继承基类中所有的功能
2、派生类和基类同时存在相同的功能时,优先找派生类的
3、python类可以同时继承多个类(C#/java不可以),用逗号隔开,优先找自己的功能,再在继承类中从左到右的顺序查找功能
4、多继承时的查找顺序如下:
示例:
#!/usr/bin/env python # -*- coding:utf-8 -*- """ 面向对象之继承 """ #定义一个父类,又叫基类 class Animals: def say(self): print(‘Hello, I am saying‘) def run(self): print(‘I am running‘) #定义子类,又叫派生类,在括号中写上父类名 class Cat(Animals): def __init__(self, name): self.name = name def sing(self): print(self.name + ‘ 喵喵喵‘) #定义子类,又叫派生类,在括号中写上父类名 class Dog(Animals): def __init__(self, name): self.name = name def sing(self): print(self.name + ‘ 汪汪汪‘) cat1= Cat(‘小猫咪‘) cat1.sing() cat1.say() dog1 = Dog(‘小狗狗‘) dog1.sing() dog1.run()
示例结果:
四、面向对象--多态,多种形态
python本身支持多态
#!/usr/bin/env python # -*- coding:utf-8 -*- """ 多态 """ class Foo: def f1(self): print(‘Foo‘) class Bar: def f1(self): print(‘Bar‘) def func(arg): print(arg) func(Foo()) func(Bar())
原文地址:https://www.cnblogs.com/june-L/p/11669081.html
时间: 2024-10-24 20:53:25