设为首页 加入收藏

TOP

python — 面向对象(一)
2019-08-24 00:07:58 】 浏览:118
Tags:python 面向 对象

1 基础概念

  • 1.什么是类?
    具有相同方法和属性的一类事物。

  • 2.什么是对象、实例 ?

    一个拥有具体属性值和动作的具体个体。

  • 3.实例化

    从一个类 得到一个具体对象的过程。

  • 4.组合

    一个类的对象作为另一个类对象的实例变量。

2 面向对象的基本格式与作用

  • 1.类(只要类存在,不需特地去执行)内部代码会自动从上到下依次执行,类变量会直接执行,方法只有被调用时,方法内部的代码才会执行。
  • 2.类也可以嵌套到类里面(内部代码执行顺序同上)。

2.1 面向对象的基本格式

# ###### 定义类 ###### 
class 类名:
    def 方法名(self,name):
        print(name)
        return 123
    def 方法名(self,name):
        print(name)
        return 123
    def 方法名(self,name):
        print(name)
        return 123
# ###### 调用类中的方法 ###### 
# 1.创建该类的对象
obj = 类名()
# 2.通过对象调用方法
result = obj.方法名('alex')
print(result)

应用场景:遇到很多函数,需要给函数进行归类和划分。 【封装】

面向对象中有三个关键词:类 / 对象 / 方法

小练习:

  • 1.类和对象是什么关系?

    对象是类的一个实例。

    class Foo:
      def __init__(self,name):
            self.name = name
      def run(self):
            pass
    
    
    obj1 = Foo('ale')
    obj2 = Foo('eric')
  • 2.self是什么?

    self就是一个形式参数,对象调用方法时,python内部会将该对象传给这个参数。

    class Foo:
      def run(self,num):
          pass
    
    obj = Foo()
    obj.run(5)

示例:

class Db:
    def db_read(self):
        pass

    def db_write(self):
        pass

    def db_delete(self):
        pass

    def db_update(self):
        pass

class File:
    def file_read(self):
        pass

    def file_write(self):
        pass

    def file_delete(self):
        pass

    def file_update(self):
        pass

2.2.对象的作用

存储一些值,以后方便自己使用。

# 示例一
class File:
    def read(self):
        with open(self.xxxxx, mode='r', encoding='utf-8') as f:
            data = f.read()
        return data

    def write(self, content):
        with open(self.xxxxx, mode='a', encoding='utf-8') as f:
            f.write(content)

# # 实例化了一个File类的对象
obj1 = File()
# # 在对象中写了一个xxxxx = 'test.log'
obj1.xxxxx = "test.log"
# # 通过对象调用类中的read方法,read方法中的self就是obj。
# # obj1.read()
obj1.write('alex')

# 实例化了一个File类的对象
obj2 = File()
# 在对象中写了一个xxxxx = 'test.log'
obj2.xxxxx = "info.txt"
# 通过对象调用类中的read方法,read方法中的self就是obj。
# obj2.read()
obj2.write('alex')
# 示例二
class Person:
    def show(self):
        temp = "我是%s,年龄:%s,性别:%s " %(self.name,self.age,self.gender,)
        print(temp)
        
p1 = Person()
p1.name = '张三'
p1.age = 19
p1.gender = '男'
p1.show()

p2 = Person()
p2.name = '李四'
p2.age = 19
p2.gender = '男'
p2.show()
# 示例三
class Person:
    def __init__(self,n,a,g): # 初始化方法,给对象的内部做初始化。
        self.name = n
        self.age = a
        self.gender = g

    def show(self):
        temp = "我是%s,年龄:%s,性别:%s " % (self.name, self.age, self.gender,)
        print(temp)

# 类() 实例化对象,自动执行此类中的 __init__方法。
p1 = Person('家琪',19,'男')
p1.show()

p2 = Person('利奇航',19,'男')
p2.show()

总结:将数据封装到对象,方便使用。

什么时候用面向对象?

    1. 函数(业务功能)比较多,可以使用面向对象来进行归类。
    1. 想要做数据封装(创建字典存储数据时,可以使用面向对象)。
    1. 游戏示例:创建一些角色并且根据角色需要再创建人物。

2.3 总结

如果写代码时,函数比较多比较乱。

    1. 可以将函数归类并放到同一个类中。
    2. 函数如果有一个反复使用的公共值,则可以放到对象中。
class File:
    def __init__(self,path):
        self.file_path = path
        
    def read(self):
        print(self.file_path)
    
    def write(self,content):
        print(self.file_path)
    
    def delete(self):
        print(self.file_path)
    
    def update(self):
        print(self.file_path)
    
p1 = File('log.txt')
p1.read()

p2 = File('xxxxxx.txt')
p2.read()
# 1. 循环让用户输入:用户名/密码/邮箱。 输入完成后再进行数据打印。
# ########## 以前的写法
USER_LIST = []
while True:
    user = input('请输入用户名:')
    pwd = input('请输入密码:')
    email = input('请输入邮箱:')
    temp = {'username':user,'password':pwd,'email':email}
    USER_LIST.append(temp)
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.pas
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[Python]基于tkinter的九型人格测.. 下一篇day04_步入百万年薪的第四天——..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目