python 面向对象(一)初识面向对象

阅读: 评论:0

python 面向对象(一)初识面向对象

python 面向对象(一)初识面向对象

##################################总结####################

1.

面向过程:一切以事物的发展流程为中心

面向对象:一切以对象为中心,一切皆为对向,具体的某个事物就是对象

优点:可维护性比原来好 缺点:编写相对比较复杂. 上手比较难.

面向过程: 应用程序相对比较小. 不需要大规模的设计
面向对象: 程序非常大. 项目管理 维护成本很高. 此时更适合用面向对象(结构)

打比方:
大象进冰箱
步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门

面向对象:大象, 你进冰箱.
此时主语是大象. 我操纵的是大象. 此时的大象就是对象

2. 类. 对象
类: 就是图纸. 创建对象的第一步. 先画图纸. 先写类.
对象: 对象就是车. 通过图纸造出来的具体的东西. 通过类来创建对象

class 类名:

  def__init__(self):#初始化方法,又被称为构造方法

        self.属性=值

        self.属性=值

        self.属性=值

  def fangfa(self):

    方法体(函数体,  return)

变量 = 类()
变量.属性 # 操作属性
变量.方法 # 调用方法

class HeShang:def __init__(self, fh, name, miao):self.fahao = fhself.name = nameself.miao = miaodef nianjing(self):print("和尚会念经")def huayuan(self):print("和尚会化缘")lzs = HeShang("花和尚", "鲁智深", "梁山水庙")

#不需要向原来一样传递一样的参数了 lzs.nianjing() lzs.huayuan()

 3.面向对象的三大特征

 面向对象三大特征: 封装, 继承, 多态. 只要是面向对象编程语言. 都有这三个特征.

(1)封装:把很多数据封装到一个对象中,把固定功能的代码封装到一个代码块, 函数, 对象,打包成模块,这都属于封装的思想.

1. 对属性的封装(__init__())
= xxx
2. 对方法和功能的封装

(2)继承: 子类可以自动拥有父类中除了私有属性外的其他所有内容.

class Animal:def dong(self):print("动物会动, 顾雍")class Cat(Animal): # 子类其实是对父类的一种扩展def catchMouse(self):print("猫很皮, 抓老鼠")
c = Cat()
c.dong()
c.catchMouse()a = Animal() # 父类的对象不能执行子类中的功能
a.dong()
# a.catchMouse() # 创建的是动物. 动物不能执行抓老鼠

 支撑继承多个继承

# python支持多继承
class Foo1:def getMoney(self):print('给你个大嘴巴子')def play(self):print("玩儿")class Foo2:def getMoney(self):print('给多点儿')class Bar(Foo1, Foo2): # 离当前类最近的是亲爹, 后面的是干爹.passb = Bar()  # 就近原则, MRO的C3算法
b.getMoney() # Foo2里的

(3)多态:同一个对象多种形态.

class Animals:def eat(self):print("动物就知道吃")
class pig(Animals):def eat(self):print("猪在吃")
class tiger(Animals):def eat(self):print("大虫在吃")
class lion(Animals):def eat(self):print("西几在吃")
class feeder:def feed(self,Ani):Ani.eat() #传进来的东西要会吃就行
# 动物园 pig = pig() tiger=tiger() lion=lion()
alex = feeder() alex.feed(pig) alex.feed(tiger) alex.feed(lion)

多态的好处:  程序具有超高的可扩展性,面向对象思想的核心与灵魂,python自带多态.

 

    1. user_list = []
      while True:
              user = input(“请输入用户名:”)
              pwd = input(“请输入密码:”)
              email = input(“请输入邮箱:”)

      1. while循环提示用户输入:用户名、密码、邮箱
      2. 为每个用户创建一个对象,并添加到列表中。
      3.  

      4. 当列表中的添加了3个对象后,跳出循环并以此循环打印所有用户的姓名和邮箱。如

 

user_list=[]class UserInfo:def __init__(self,username,password,email):self.username=usernameself.password&#ail=email
while True:user=input('请输入用户名:')pwd=input('请输入密码:')email=input('请输入邮箱:')u=UserInfo(user,pwd,email)#创建对象user_list.append(u)#把创建好的对象添加到列表中if len(user_list)==3:breakfor i in user_list: #i是user_list中的对象print(f'用户名:{i.username},邮箱:{i.email}')

扩展  在原有的基础上添加  注册 登陆功能    注明:调用 2次注册 一次登陆   登陆只有3次机会

class User:def __init__(self,username,password):self.username=usernameself.password=password
class Account:def __init__(self):self.user_list=[]#目的是存储用户信息def login(self):for i in range(3):uname=input(">>请输入登陆名:")upwd=input('>>请输入密码:')for u in self.user_list:if uname == u.username and upwd == u.password:print('登陆成功')returnelse:print('登陆失败')def regist(self):user=input('请输入注册的用户名:')upwd=input('请输入注册的密码:')u=User(user,upwd)#创建用户self.user_list.append(u)#这样会出现重复的用户def run(self):ist()#自己类中的方法互相调用用self
        ist()self.login()
obj=Account()
obj.run()


 在原有的基础上 强行装一波 文件

class User:def __init__(self, username, password):self.username = usernameself.password = passwordclass Account:def __init__(self):# self.user_list = [] # 目的是存储用户信息passdef login(self):for i in range(3):uname = input("登录用户名>>>")upwd = input("登录密码>>>")f = open("info", mode="r", encoding="utf-8")for line in f:lst = line.strip().split("_") # ["wusir", "123"]u = User(lst[0], lst[1])#把循环的文件第一个位子 第二个位子 赋值给第一个位子和第二个位子if uname == u.username and upwd == u.password:print("登录成功")returnelse:print("登录失败")def regist(self):uname = input("注册用户名>>>")upwd = input("注册密码>>>")u = User(uname, upwd) # 创建用户 把User的类强行赋值了一波# 把用户写入到文件中f = open("info", mode="a", encoding="utf-8")f.write(u.username+"_"+u.password+"n")f.flush()f.close()def run(self): # 运行# 调用两次注册ist() # 自己类中的方法互相调用. 用self调用# ist()  # 自己类中的方法互相调用. 用self调用# 一次登录# self.login()# if __name__ == '__main__': # 当前py文件如果是启动文件. 执行这里的代码
obj = Account()
obj.run()

 

转载于:.html

本文发布于:2024-02-01 07:04:38,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170674228234756.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:面向对象   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23