1.函数编程和面向对象的对比
函数:
def email(em,text):
"""
发送邮件
:return:
"""
print(em,text)
def msg(tel,text):
"""
发送短信
:return:
"""
print(tel,text)
def wechat(num,text):
"""
发送微信
:return:
"""
print(num,text)
# 编写功能:假设用户购买课程,然后给alex发送提醒;
if 1==1:
msg('188888888','张进购买了一个学位课')
email('alex@sb.com','张进购买了一个学位课')
wechat('xxxx','张进购买了一个学位课')
面象对象则是在函数上加上一个 class
class 一个类名
编写功能的时候
obj(这个就叫对象,命名规则同函数,以后命名规则不单写,不同函数的单写,记得还有一个事是,要有意义)=(类名)()
obj(对象)。函数名(这里传参不传参无所谓等于函数使用方法)
对比 函数调用简单/调用简单
面向对象定义复杂/调用复杂 好处,归类方便了
总结:
1.函数式编程可能会比面向对象好。
2.python中支持两种编程方式。
3.面线对象方式格式
定义:
class 类名: -定义了一个类
def 函数名(self): -在类中编写了一个‘方法’
pass
调用:
x1(对象名)=类名() -创建了一个对象/实例化一个对象
x1(对象名)。函数名() -通过对象调用其中一个方法。
2,打印
1.构造方法
示例一:
class foo(类名随意写):
def __init__(self,name,这后面可以有无限多的变量):构造方法,目的进行数据初始化。
self.name=name
self.age=18
obj(对象名随意写)=foo(类名随意写)(‘赵一宁’)
通过构造方法,可以将数据进行打包,以后使用时,去其中获取即可。
实例二:
class bar(类名随意写):
pass
obj(对象名随意写)=bar(类名随意写)() 这样直接执行函数
2.应用
a。将数据封装到对象中,以便自己在方法中调用
b.将数据封装到对象中,供其他函数使用
class Foo:
def __init__(self,k1,k2,k6):
self.k1 = k1
self.k2 = k2
self.k6 = k6
obj = Foo(111,22,333)
new_func(obj)
面向对象代码如何编写
a.规则
class 类名
def __init-__(self这是必有的,然后n个变量):
self。变量名=变量1
def 函数名(self,变量2):
print(self。变量1,变量2)
obj(对象名)=类名()
obj(对象名)=函数名()
b.什么时候写?如何写?
方式一:归类+提取公共值
方式二:在指定类中编写和当前类相关的所有代码+提取公共值
class Person:
def __init__(self,na, gen, age, fig)
self.name = na
self.gender = gen
self.age = age
self.fight =fig
def grassland(self):
self.fight = self.fight - 10
def practice(self):
self.fight = self.fight + 90
def incest(self):
self.fight = self.fight - 666
cang = Person('苍井井', '女', 18, 1000) # 创建苍井井角色
dong = Person('东尼木木', '男', 20, 1800) # 创建东尼木木角色
bo = Person('波多多', '女', 19, 2500) # 创建波多多角色
dong.grassland()
这个可以创建多个对象,具体看哪个对象,调用的哪个函数
3.面向对象的三大特性:封装/继承/多态
封装:
将相关的功能封装到一个类中:
class 类名:
def 函数名
。。。
将数据封装到一个对象中
class 类名:
def__int__(self默认的,n多个变量名):
self。变量名(这个随便起名,这样方便计)=变量名
。。。
对象名=类名(传参 或不传都行)
继承:
分为父类就是基类,子类就是派生类
原则就是先在自己的类中找
1.继承编写
class 类名(父类):
2.支持多继承(先左后右)
3.多继承提供了代码的再次使用性
4.找的时候注意self是谁的对象,从哪开始找。
多态:
多种形态或多种状态
鸭子模型,只要嘎嘎叫的就是鸭子,闭眼睛都知道的
由于python自己就支持所以以后学习别的语言的时候再注意下吧