面向对象基础2

面向对象基础2

实例化对象

  • 案例及思考

    class File:
        def read(self):
            with open(self.xxxx,'r',encoding="utf-8") as f:
                data = f.read()
        def write(self,):
            with open(self.xxxx,"a",encoding="utf-8") as f:
                f.write(self.xx)
    obj1 = File()
    obj1.xxxx = "test.log"
    obj1.read()
    obj1.xx = "李子柒"
    obj1.write()
    #类似于函数的函数?对于多个函数需要引用用一个参数时,我们把它提取出来,哐,给一个公共的路劲
    #也可以设计多个不同的类型的参数
    #如下例子只适用于一个xxxx参数变量时
    obj2 = File()
    obj2.xxxx = "info.log"
    obj2.read()
    obj2.write()
     
    

类的初始化

  • 基础样式
class Person:
    def __init__(self):
        self.name = "杨子良"
        self.age = 19
        self.gender ="男"
        # print("执行init")
    def show(self):
        temp = "我是%s,年龄:%s,性别:%s"%(self.name,self.age,self.gender)
        print(temp)
p1 = Person()
p1.show()
#虽然两个函数之间是并列关系,但依然可以执行
#原因:__init__当调用函数时其自动化执行,如果换成奇谈的函数便无法执行
  • 加参数
class Person:
    def __init__(self,n,a,g):
        self.name = n
        self.age = a
        self.gender = g
        # print("执行init")
    def show(self):
        temp = "我是%s,年龄:%s,性别:%s"%(self.n,self.a,self.g)
        print(temp)
p1 = Person("杨子列",25,"男")
p1.show()
p2 = Person("杨子莲",23,"女")
p2.show()
#思考:利用self这个桥梁尽可能的将同一个类中函数重复的参数进行函数间的省略及通用,在其中又借助__init__这个小工具进一步简化

总结

  • 如果写代码时,函数比较多比较乱。
    • 1.可以将函数归类并放到同一类中
    • 2.函数如果有一个反复使用的公共参数,则可以放到对象中。

应用案例

#read、write、delte在操作的时候都需要获得共同的路径path,可利用下列的方式进行改进
class File():
    def __init__(self,path):
        self.file_path = path

    def read(self):
        print(self.file_path)

    def write(self):
        print(self.file_path)

    def delte(self):
        print(self.file_path)

p1 = File("log.txt") #将值赋给了p1
p1.read()
p1.write()
p1.delte()

案例二

  • class Person:
        def __init__(self,user,pwd,email):
            self.username = user
            self.password = pwd
            self.email = email
    user_list = []
    user = input("请输入用户名:")
    pwd = input("请输入密码:")
    email = input("请输入邮箱:")
    p = Person(user,pwd,email)
    user_list.append(p)
    for item in user_list:
        temp = "我的名字是:%s,密码:%s,邮箱是%s"%(item.username,item.password,item.email)
        print(temp)
    #我认为这是为了练习而强行练习
    
    #改进版
    class Person:
        def __init__(self,user,pwd,email):
            self.username = user
            self.password = pwd
            self.email = email
        def info(self):
            return "我的名字是:%s,密码:%s,邮箱是%s"%(item.username,item.password,item.email)
    user_list = []
    user = input("请输入用户名:")
    pwd = input("请输入密码:")
    email = input("请输入邮箱:")
    p = Person(user,pwd,email)
    user_list.append(p)
    for item in user_list:#将p传递给了item
        msg = item.info()
        print(msg)
    
posted @ 2020-09-23 17:33  小杨的冥想课  阅读(87)  评论(0编辑  收藏  举报