python-fullstack-s13-day18-python面向对象

一、面向对象的初识

  我们已经学过了python的基础数据类型及函数了,那么我们需要学习一种新的编程思想,就是面向对象的思想。

  在python中的一个观点,一切皆是对象,我们python程序员必须站在上帝的角度来看待问题,调用不同的代码。

  概念:

    类:自然界中有许多共性的一类事物,在程序中也可这样理解。

    对象:对象就是类的具体体现的一个,其从属于类,但是又是类的具体体现。

二、面向对象的结构

 1 # 在我们处理文件中数据的增删改查的时候,我们用到了函数,其结构类似于下面:
 2 def add(path, encoding, mode):
 3     """30行代码"""
 4     pass
 5 
 6 def remove(path, encoding, mode):
 7     """30行代码"""
 8     pass
 9 
10 def update(path, encoding, mode):
11     """30行代码"""
12     pass
13 
14 def select(path, encoding, mode):
15     """30行代码"""
16     pass
17 
18 # 定义了函数后我们在调用时如下:
19 add('log', 'utf-8', 'r')
20 remove('log', 'utf-8', 'r')
21 update('log', 'utf-8', 'r')
22 select('log', 'utf-8', 'r')
23 
24 # 我们每次调用函数的时候都必须给他传参数,很麻烦,我们引入类的概念
25 # class 为python的关键字,用此关键字来定义类名
26 class File:
27     """已经定义了一个类"""
28     def __init__(self, path, encoding, mode):
29         self.path = path
30         self.encoding = encoding
31         self.mode = mode
32 
33     def add(self):
34         """30行代码"""
35         pass
36 
37     def remove(self):
38         """30行代码"""
39         pass
40 
41     def update(self):
42         """30行代码"""
43         pass
44 
45     def select(self):
46         """30行代码"""
47         pass
48 # 类这是个概念,要想实际让类实现各种功能需要类中的一个对象来做
49 obj = File("log", "utf-8","r")
50 obj.add()
51 obj.remove()
52 
53 
54 class Person:       # 定义一个类
55     level = "高级动物"  # 静态变量,静态字段
56     mind = "有思想"
57     language = "语言"
58 
59     def work(self):  # 动态方法,函数
60         pass
61 
62     def eat(self):
63         pass

三、类名调用变量,方法

 1 class Person:
 2     """此类是构建人类"""
 3     level = "高级动物"  # 静态变量,静态字段
 4     mind = "有思想"
 5     language = "语言"
 6 
 7     def work(self):  # 动态方法,函数
 8         print("This is work")
 9 
10     def eat(self):
11         pass
12 # 类名
13     # 1、类名查看类中所有的变量(字段),方法(函数):
14     # 2、类名对静态变量(静态字段)进行操作,最好不要通过__dict__这个字典进行操作
15         # 2.1、通过类名.__dict__ 不建议!!!通过这个方法
16 # print(Person.__dict__["mind"])  # 可以查值
17 # Person.__dict__["create"] = "有创造力"  # 不能增加值
18 # del Person.__dict__["mind"]   # 不能删除值
19 # Person.__dict__["mind"] = "行尸走肉"  # 不能更改值
20 # print(Person.__dict__)
21 # 小总结:查询类里面所有的变量 Person.__dict__
22         # (增删改)查询单个变量  不要用Person.__dict__
23         # 2.2、通过类名.变量名  常用!!!
24 # print(Person.mind)  # 可查询
25 # print(Person.language)  # 可查询
26 # Person.create = "有创造力"  # 可增加
27 # del Person.mind     # 可删除
28 # Person.mind = "行尸走肉"    # 可更改
29 # print(Person.mind)
30 # print(Person.__dict__)
31     # 3、类名对动态方法(函数)进行操作
32         # 3.1、通过类名.__dict__  不建议!!!通过这个方法
33         # 3.2、类名.方法名
34 # Person.work(11)

四、实例化对象及内部过程

五、对象调用变量,方法

 1 class Person:
 2     '''
 3     此类是构建人类
 4     '''
 5     level = '高级动物'
 6     mind = '有思想'
 7     language = '语言'
 8 
 9     def __init__(self,name,age,sex,area,hobby):  # 构造方法
10         self.name = name  # slef.name name 是对象属性
11         self.age = age
12         self.sex = sex
13         self.area = area
14         self.hobby = hobby
15 
16     def work(self,eye):
17         self.eye = eye
18         print('开始工作了!!!!')
19     def eat(self):
20         pass
21 
22 #实例化对象.
23 # aduan = Person()  # 过程就叫做实例化一个对象
24 # 类名+():
25 # aduan = Person('啊段',18,'男','河北邯郸','非女')
26 # print(aduan)  # <__main__.Person object at 0x0000000001F7EA20>
27 #1 产生一个空的对象空间
28 #2,自动执行类中的__init__方法,并将空的对象空间传给self,剩下的值传给相应形参
29 #3,执行init方法,给对象封装属性,并将完善好的这个对象返回给 类名()
30 
31 # 对象
32     # 1,查找对象中的所有属性
33 # aduan = Person('啊段',18,'男','河北邯郸','非女')
34 # print(aduan.__dict__)
35 
36 # aduan = Person('啊段',18,'男','河北邯郸','非女')
37 # aying = Person('啊颖',17,'女','河北衡水','开车...')
38     #2, 对象操作对象中属性.
39 # aduan = Person('啊段',18,'男','河北邯郸','非女')
40 # print(aduan.name) # 查
41 # aduan.job = 'student' # 增
42 # del aduan.age # 删
43 # aduan.sex = 'laddyboy'
44 # print(aduan.__dict__)
45     #3,对象操作类中的静态变量(静态字段). 只能查询不能增删改.
46 # aduan = Person('啊段',18,'男','河北邯郸','非女')
47 # print(aduan.level)  # 查 类中的静态字段
48 # aduan.level = '中等动物'  # 对象中设置新属性,而不是改变类中的level
49 # print(aduan.level)
50 # del aduan.level
51 # print(Person.__dict__)
52     #3,对象执行类中的方法.
53 aying = Person('啊颖',17,'','河北衡水','开车...')
54 print(aying)
55 aying.work('大眼睛')
56 print(aying.__dict__)
57 # 1 self 位置参数, 默认接受的是对象空间,约定俗成叫self.
58 # 2 在类的非__init__方法中,也可以给对象添加一些属性,前提必须先执行这个方法.

猜你喜欢

转载自www.cnblogs.com/bug-ming/p/9235647.html
今日推荐