Python中面向对象的哪三大特性最为关键?
- 内容介绍
- 文章标签
- 相关推荐
本文共计622个文字,预计阅读时间需要3分钟。
函数式编程和面向对象的对比:- 函数:定义/调用简单- 面向对象:定义/调用复杂好处:- 面向对象:归类、将类似函数写在一起面向对象代码示例:pythonclass Foo: def __init__(self, name): self.name=name
函数: 定义简单/调用简单
面向对象: 定义复杂/调用复杂 好处:归类,将某些类似的函数写在一起
def __init__(self,name):
self.name = name
def detail(self,msg):
print(self.name,msg)
obj = Foo()
obj.detail()
可以先归类,再提取公共值到构造方法中
#归类class File:
def file_read(self,file_path):
pass
def file_update(self,file_path):
pass
def file_delete(self,file_path):
pass
#提取公共值
class File:
def __init__(self,file_path):
self.file_path = file_path #各方法中的公共值放入__init__方法中,避免重复写
def file_read(self):
pass
def file_update(self,file_path):
pass
def file_delete(self,file_path):
pass
(1)封装
将相关功能(不同方法)封装到一个类中,
def email(self):pass
def msg(self):pass
def wechat(self):pass
将数据封装到一个对象中:
class Person:def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender
obj = Person('孙福来',18,'女')
(2)继承
def f3(self):
print('f3')
class Base(SuperBase): # 父类,基类
def f2(self):
print('f2')
class Foo(Base): # 子类,派生类
def f1(self):
print('f1')
obj = Foo()
obj.f1()
obj.f2()
obj.f3()
# 原则:现在自己类中找,没有就去父类
支持多继承(一般先找左/再找右),多继承遵守C3算法,多继承的目的是提高代码重用性,在找继承关系的时候,在类中self是谁的对象,从谁开始找
(3)多态
多种形态或多种状态
鸭子模型,只要可以嘎嘎叫就是鸭子.
# 由于python原生支持多态,所以没有特殊性.
class Foo1:
def f1(self):
pass
class Foo2:
def f1(self):
pass
class Foo3:
def f1(self):
pass
def func(arg): #参数arg是一个对象,随便传入一个对象,只要有f1方法即可
arg.f1()
obj = Foo1() # obj= Foo2() obj = Foo3()
func(obj)
本文共计622个文字,预计阅读时间需要3分钟。
函数式编程和面向对象的对比:- 函数:定义/调用简单- 面向对象:定义/调用复杂好处:- 面向对象:归类、将类似函数写在一起面向对象代码示例:pythonclass Foo: def __init__(self, name): self.name=name
函数: 定义简单/调用简单
面向对象: 定义复杂/调用复杂 好处:归类,将某些类似的函数写在一起
def __init__(self,name):
self.name = name
def detail(self,msg):
print(self.name,msg)
obj = Foo()
obj.detail()
可以先归类,再提取公共值到构造方法中
#归类class File:
def file_read(self,file_path):
pass
def file_update(self,file_path):
pass
def file_delete(self,file_path):
pass
#提取公共值
class File:
def __init__(self,file_path):
self.file_path = file_path #各方法中的公共值放入__init__方法中,避免重复写
def file_read(self):
pass
def file_update(self,file_path):
pass
def file_delete(self,file_path):
pass
(1)封装
将相关功能(不同方法)封装到一个类中,
def email(self):pass
def msg(self):pass
def wechat(self):pass
将数据封装到一个对象中:
class Person:def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender
obj = Person('孙福来',18,'女')
(2)继承
def f3(self):
print('f3')
class Base(SuperBase): # 父类,基类
def f2(self):
print('f2')
class Foo(Base): # 子类,派生类
def f1(self):
print('f1')
obj = Foo()
obj.f1()
obj.f2()
obj.f3()
# 原则:现在自己类中找,没有就去父类
支持多继承(一般先找左/再找右),多继承遵守C3算法,多继承的目的是提高代码重用性,在找继承关系的时候,在类中self是谁的对象,从谁开始找
(3)多态
多种形态或多种状态
鸭子模型,只要可以嘎嘎叫就是鸭子.
# 由于python原生支持多态,所以没有特殊性.
class Foo1:
def f1(self):
pass
class Foo2:
def f1(self):
pass
class Foo3:
def f1(self):
pass
def func(arg): #参数arg是一个对象,随便传入一个对象,只要有f1方法即可
arg.f1()
obj = Foo1() # obj= Foo2() obj = Foo3()
func(obj)

