python学习——面向对象
-
1.函数式编程和面向对象的对比
-
函数:
- 优点:定义简单、调用简单
- 缺点:
-
面向对象:
- 缺点:定义复杂、调用复杂
- 优点:将相同功能的函数归类
-
总结:
- 1、函数式编程有些时候比面向对象好
- 2、python中支持两种编程方式
- 3、面向对象格式:
-
函数:
- 2.面向对象代码如何编写
-
3.面向对象三大特性:封装/继承/多态
-
封装:
-
将相关功能封装到一个类中:
- class Message:
- def email(self):pass
-
将数据封装到一个对象中:
-
class Person:
-
def __init__(self,name,age,gender):
- self.name= name
- self.age = age
- self.gender = gender
- obj = Person('孙福来',18,'女')
-
def __init__(self,name,age,gender):
-
class Person:
-
将相关功能封装到一个类中:
-
继承:
-
继承编写
-
class Foo(父类):
- pass
-
class Foo(父类):
- 支持多继承(先找左,再找右)
- 为什么要有多继承?提供代码重用性
- 练习:找self是哪个类的对象,就从该类开始找(自己没有找父类)
-
继承编写
-
多态
- 多种形态或多种状态、
- 鸭子模型,只要可以嘎嘎叫就是鸭子.
-
def func(arg):
- arg.send()
-
封装:
-
重点:
- 1.编写方式执行流程
-
2.如何归类?跟着感觉走
- 反向:归类+提取公共值
- 正向:类相关的功能+提取公共值
-
3.三大特性
-
封装:
- 将相关功能封装到一个类中
- 将数据封装到一个对象中
-
封装:
class Userinfo: def __init__(self): self.name = None def info(self): print('当前用户名称:%s' %(self.name)) def account(self): print('当前用户%s的账单是。。。' %(self.name)) def shopping(self): print('%s购买了人形抱枕' %(self.name)) def login(self): usr = input('>>>') pwd = input('>>>') if usr == 'alex' and pwd == 'sb': self.name = usr while 1: print(''' 1.查看用户信息 2.查看用户账单 3.购买 ''') num = int(input('序号:')) if num == 1: self.info() elif num == 2: self.account() elif num == 3: self.shopping() else: print('序号不存在,请重新输入') else: print('false') obj = Userinfo() obj.login()