1 class Hand:
2 pass
3 class Foot:
4 pass
5 class Trunk:
6 pass
7 class Head:
8 pass
9
10 class Person:
11 def __init__(self,id_num,name,hand,foot,trunk,head):
12 self.id_num=id_num
13 self.name=name
14 self.hand=Hand()
15 self.foot=Foot()
16 self.trunk=Trunk()
17 self.head=Head()
class School:
def __init__(self,name,addr):
self.name=name
self.addr=addr
def tell_info(self):
print(‘School(%s,%s)‘ %(self.name,self.addr))
class Course:
def __init__(self,name,price,period):
self.name=name
self.price=price
self.period=period
self.school=School(‘oldboy‘,‘沙河‘)
c1=Course(‘python‘,15000,‘5month‘)
print(c1.name)
c1.school.tell_info()
面向对象编程
阅读目录
一 三大编程范式
正本清源一:有人说,函数式编程就是用函数编程--->傻逼
编程范式即编程的方法论,标识一种编程风格
大家学习了基本的python语法后,大家就可以写python代码了,然后每个人写代码的风格不同,这些不同的风格就代表了不同的流派
如果把python的基本语法比作武术的基本功,那么不同的编程风格就好比不同的武林门派。
虽然大家风格不同,但是都可以完成你的编程需求,python是一门面向对象编程语言,但是到目前为止,你从未接触面向对象编程,然而你已经可以解决很多问题了,在python中并没有人强制你使用哪一种固定的风格。
根本就没有什么门派是天下无敌的,不同的风格在不同的场景下都有各自的牛逼之处,
三大编程范式:
1.面向过程编程:捂裆派
2.函数式编程:峨美眉妹妹派
3.面向对象编程:少林蛋黄派
二 编程进化论
1.编程最开始就是无组织无结构,从简单控制流中按步写指令
2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定义了一个函数),便实现了代码重用,且代码由无结构走向了结构化,创建程序的过程变得更具逻辑性
3.我们定义函数都是独立于函数外定义变量,然后作为参数传递给函数,这意味着:数据与动作是分离的
4.如果我们把数据和动作内嵌到一个结构(函数或类)里面,那么我们就有了一个‘对象系统’(对象就是数据与函数整合到一起的产物)。
假设你是一条狗,我们用结构化的数据来描述你
1:数据与动作分离
2:数据与动作结合
导向:
1.面向对象设计
2.什么是类什么是对象
三 面向对象设计与面向对象编程
正本清源二:有人说,只有class定义类这才是面向对象,def定义函数就是函数相关的,跟面向对象没关系--->大傻逼
面向对象设计(Object oriented design):将一类具体事物的数据和动作整合到一起,即面向对象设计
面向对象设计(OOD)不会特别要求面向对象编程语言。事实上,OOD 可以由纯结构化语言来实现(比如 C)。但如果想要构造具备对象性质和特点的数据类型,就需要在程序上作更多的努力。
我们现在想用程序表述一台提款机,可以用面向过程,和面向对象两种方式设计(作为练习作业,你的智商,暂时看不懂,先看狗的例子吧)
#_*_coding:utf-8_*_
__author__ = ‘Linhaifeng‘
#为了方便大家理解,这里我们先用面向过程思想去实现
bank_database={
‘12345‘:{‘name‘:‘alex‘,‘passwd‘:‘123‘,‘money‘:100},
‘12335‘:{‘name‘:‘linhaifeng‘,‘passwd‘:‘123‘,‘money‘:100},
‘22235‘:{‘name‘:‘wupeiqi‘,‘passwd‘:‘123‘,‘money‘:100},
‘14567‘:{‘name‘:‘yuanhao‘,‘passwd‘:‘123‘,‘money‘:100},
}
current_user={‘account_id‘:None,‘status‘:None}
def auth_login(func):
def wrapper(account):
if not current_user[‘status‘]:
account_id=account[‘account_id‘]
if account_id not in bank_database:
print(‘账号不存在‘)
return
password=input(‘输入密码: ‘)
if password == bank_database[account_id][‘passwd‘]:
current_user[‘account_id‘]=account_id
current_user[‘status‘]=True
res=func(account)
else:
res=func(account)
return res
return wrapper
@auth_login
def get_money(account):
account_id=account[‘account_id‘]
money=int(input(‘