python基础(六)

本节主要内容为面向对象。

一、面向对象的特征

Class 类
一个类即是对一类拥有相同属性的对象的抽象、蓝图、原型。在类中定义了这些对象的都具备的属性(variables(data))、共同的方法

Object 对象
一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象,每个对象亦可以有不同的属性,就像人类是指所有人,每个人是指具体的对象,人与人之前有共性,亦有不同

Encapsulation 封装
在类中对数据的赋值、内部调用对外部用户是透明的,这使类变成了一个胶囊或容器,里面包含着类的数据和方法

Inheritance 继承
一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承

Polymorphism 多态
态是面向对象的重要特性,简单点说:“一个接口,多种实现”,指一个基类中派生出了不同的子类,且每个子类在继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是同一种事物表现出的多种形态。

二、封装

封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

下面看一个例子:

1 class Foo(object):#定义一个类,class是定义类的语法,Foo是类名,(object)是新式类的写法
2     def __init__(self,name,age): #初始化函数构建方法,在生成一个角色时要初始化的一些属性就填写在这里
3         self.name = name
4         self.age = age
5 obj1=Foo(‘csp‘,15) #实例化对象,将参数自动传给Foo下面的__init__(...)方法
6 obj2=Foo(‘zj‘,14)
7 print(obj1.name,obj1.age)
8 print(obj2)

结果输出:
csp 15
<__main__.Foo object at 0x0000000000A97DA0>

看另一个例子:

 1 class Foo:
 2     def __init__(self,name,age):
 3         self.name = name
 4         self.age = age
 5     def show(self):
 6         print (self.name)
 7         print (self.age)
 8 obj1 = Foo(‘haha‘,15)
 9 obj2 = Foo(‘kaokao‘,14)
10 obj1.show()
11 obj2.show()

结果输出:

haha
15
kaokao
14

继承:

 1 # -*- coding:utf8 -*-
 2 class School(object):
 3     def __init__(self,name,addr):
 4         self.name = name
 5         self.adr = addr
 6         self.students=[]
 7         self.staffs=[]
 8     def enroll(self,stu_obj):
 9         print("为学员%s办理注册手续"%stu_obj.name)
10         self.students.append(stu_obj)
11     def hire(self,staff_obj):
12         self.staffs.append(staff_obj)
13         print("雇佣新员工%s"%staff_obj)
14 class SchoolMember(object):
15     def __init__(self,name,age,sex):
16         self.name =name
17         self.age = age
18         self.sex =sex
19     def tell(self):
20         print(‘‘‘----info----‘‘‘)
21 class Teacher(SchoolMember):
22      def __init__(self,name,age,sex,salary,course):
23          super(Teacher,self).__init__(name,age,sex)
24          self.salary = salary
25          self.course = course
26      def tell(self):
27          print(‘‘‘
28          ------info of Teacher:%s------
29          Name:%s
30          Age:%s
31          Sex:%s
32          Salary:%s
33          Course:%s
34          ‘‘‘%(self.name,self.name,self.age,self.sex,self.salary,self.course))
35      def teach(self):
36          print("%s is teaching course [%s]"% (self.name,self.course))
37 class Student(SchoolMember):
38     def __init__(self,name,age,sex,stu_id,grade):
39         super(Student,self).__init__(name,age,sex)
40         self.stu_id = stu_id
41         self.grade = grade
42     def tell(self):
43          print(‘‘‘
44         ------info of Student:%s------
45          Name:%s
46          Age:%s
47          Sex:%s
48          Stu_id:%s
49          Grade:%s
50          ‘‘‘%(self.name,self.name,self.age,self.sex,self.stu_id,self.grade))
51     def pry_tuition(self,amount):
52         print("%s has paid tution for $%s"%(self.name,amount))
53 school = School("laonanhaiIT","shahe")
54
55 t1=Teacher("Oldboy",56,"MF",200000,"Linux")
56 t2=Teacher("Alex",22,"M",3000,"Python")
57
58 s1=Student("chenronghua",36,"MF",1001,"Python")
59 s2=Student("xuliangwei",19,"F",1002,"Liux")
60
61 t1.tell()
62 s1.tell()
63 school.hire(t1.name)
64 school.enroll(s1)
65 #school.staffs[0].teach()
66 for stu in school.students:
67     stu.pry_tuition(5000)

时间: 2024-11-06 22:01:27

python基础(六)的相关文章

python基础六--加密模块hashlib

python加密模块hashlib 1.md5加密实例 import hashlib def md5passwd(password): m=hashlib.md5() m.update(bytes(password,encoding='utf-8')) new_password=m.hexdigest() #加密后十六进制显示 # new_password=m.digest() #加密后二进制显示 print('加密后的密码是:%s'%new_password) return new_passw

python基础六

模块 1.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻辑上组织模块,本质就是一个目录(必须带有一个__init__.py文件) 2.导入方法 import module_name import module1_name,module2_name from module_alex import *   #导入所有 from module_alex impor

Python基础 ( 六 ) —— 迭代器和生成器

#迭代器 #什么是迭代器协议? 是指对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,否则引起一个stop Iteration异常,以终止迭代.并且不可逆. 对象1 -->提供一个next方法 --> 调用对象的next方法(对象.next) -->对象2  ...... #可迭代对象 遵循迭代器协议的对象 #协议 协议是一种约定,可迭代对象实现了迭代器协议,python的一些内部工具(如for.sum.min.max函数)使用迭代器协议访问对象 原文地址:https://

Python基础六--JSON, pickle模块

一.JSON 内存中的数据<--->格式json<--->字符类型<--->保存.基于网络传输 1. 将数据转化为str形式:data_str = json.dumps(data): 2. 将str形式数据转化为字典等数据:data = json.loads(data_str): 3. 注意json格式 :data = '{"name":"gangzi"}' : 二.pickle (只应用于Python,不同版本的Python彼此

Python基础(六)

目录 1 函数 1.1 函数的分类 1.2 函数与方法 1.3 函数也是对象 1.4 注意事项 2 内置函数 2.1 查看帮助 2.2 数学函数 2.2.1 abs 2.2.2 max/min 2.2.3 pow 2.2.4 round 2.3 类型转换函数 2.4 其他函数 2.4.1 type() 2.4.2 isinstance() 2.4.3 dir() 2.4.4 len() 2.4.5 range() 2.4.6 callable() 2.4.7 bin() 2.4.8 oct()

python基础六--操作数据库

操作数据库模块:mysql的pymysql和redis的redis ,参考http://www.nnzhp.cn/blog/archives/402 1.操作mysql import pymysql conn=pymysql.connect(host='192.168.160.3',user='root',port=3306,passwd='123456',db='hqtest',charset='utf8') #建立数据库连接 #关键字传参 couser=conn.cursor() #在连接上

python 基础(六)

列表推导式 概念:提供了一种创建列表的简单快速的途径 (1) 一般形式 myList = [x for x in range(10)] ? #分解后 myList = [] for x in range(10):   myList.append(x) print(myList) (2) 一般形式+判断 myList = [x for x in range(1,21) if x>10] myList = [x for x in range(1,21) if x%2==0 and x<10] (3

python基础-第六篇-6.2模块

python之强大,就是因为它其提供的模块全面,模块的知识点不仅多,而且零散---一个字!错综复杂 没办法,二八原则抓重点咯!只要抓住那些以后常用开发的方法就可以了,哪些是常用的?往下看--找答案~ 模块定义 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成 (函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块.

Python基础篇(六)

retun空值,后面的语句将不再被执行 >>> def test(): ...    print("just a test!") ...    return ...    print("will not be print") ... >>> test() just a test! 和Java类似,在传递参数时,当参数是字符串,元组时,传递的其实是拷贝,修改实际参数不会影响到形式参数.当参数是对象时,修改实际参数将会影响到形式参数.

Python基础班每日整理(六)

03_面向对象_day03 类属性和实例属性的概念.类属性是给类对象(类是一个特殊的对象)中定义的属性,通常用来记录与这个类相关的特征,类属性不会用于记录具体对象的特征.类属性的定义是在初始化方法之外的实例对象的属性叫做实例属性,在初始化方法内部定义 类属性和实例属性的访问类属性的访问是类名.类属性实例属性的访问是实例对象.属性名,也可以在类内部使用self.属性名访问 类方法的定义和使用br/>@classmethoddef 类方法名(cls):pass需要修饰器@classmethod来标识