本文主要介绍python中类的概念性内容,如类的定义、说明及简单使用

1. 类的简单介绍

 1 # -*- coding:utf-8 -*-
2 # Author:Wong Du
3
4 '''
5 ----- 编程范式 -----
6 1、面向过程
7 基本设计思路就是程序一开始是要着手解决一个大的问题,
8 然后把一个大问题分解成很多个小问题或子过程,这些子过程
9 再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。
10 2、面向对象
11 OOP编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描述,
12 使用面向对象编程的原因一方面是因为它可以使程序的维护和扩展变得更简单
13 3、函数式编程
14
15 Class类
16 一个类即对具有相同属性的对象的抽象描述,如生物类(有生命体征的东西)
17 1、经典类和新式类(深度优先和广度优先)
18 2、构造函数(实例化时进行初始化),def __init__(self,...):
19 3、类变量和实例变量(存放位置、节省空间等)
20 4、析构函数(实例结束或程序结束是执行,用于做一些收尾工作)def __del__(self):
21 5、静态属性和动态属性
22 Object对象
23 一个具体的对象,类实例化后就是一个对象
24 Encapsulation封装
25 在类中数据变更、内部方法调用等对外部用户都是透明的,
26 这使类编程一个容器或胶囊,里面包含着类的数据和方法,用户不可感知
27 封装方法:
28 在类中变量名或方法名前加两个下划线即可
29 如:__n、def __tell():
30 Inheritance继承
31 一个类可以派生出多个子类,继承父类的部分内容
32 1、继承格式,class zi(fu):
33 2、继承中构造函数的执行规则及顺序(只执行一个,先内后外)
34 3、获取父类构造函数的初始化实例变量并在子类中新增变量的两种方法
35 ① fu.__init__(self,a,b)
36 ② super(zi,self).__init__(a,b)
37 Polymorphism多态
38 一个接口,多种调用
39 '''
40
41 class People:
42 '''
43 类的基本介绍
44 类的定义,类名格式一般首字母大写,此为经典类,
45 py3,多继承为广度优先
46 '''
47 __Author__ = "CaiYun" # 类变量
48 __Name = "Person" # 类私有变量
49 def __init__(self,name,age,addr,__priaddr='隐私'): # 构造函数,用于初始化实例变量
50 self.name = name # 实例变量
51 self.age = age
52 self.addr = addr
53 self.priaddr = __priaddr # 实例私有变量
54
55
56 # def __str__(self): # 通过打印类实例化后的实例名来调用,如p=People();print(p)
57 # return '''
58 # -----People info-----
59 # Name: %s
60 # Age: %s
61 # Addr: %s''' %(self.name,self.age,self.addr)
62
63 # def __del__(self): # 析构函数,用于做一下收尾工作
64 # print("""
65 # -----实例化了一个对象-----
66 # Object: %s
67 # Name: %s
68 # Age: %s
69 # Addr: %s""" %(self,self.name,self.age,self.addr))
70 # print("程序结束时执行...")
71
72 def __privileges(self): # 在方法名前加"两个下划线",则将方法私有化
73 print("这是一个私有方法,做一些私密的事情,外界不可感知。")
74 pass
75 def public(self):
76 print("这是一个公有方法。外界可直接调用")
77 pass
78
79 class Man(People): # 新式类
80 def __init__(self,name,age,addr,sex):
81 # People.__init__(self,name,age,addr) # 使用父类定义相关变量,不建议使用这种方法
82 super(Man,self).__init__(name,age,addr) # 使用父类定义相关变量,建议使用这种方法
83 self.sex = sex
84 pass
85 def shopping(self):
86 print("%s 要去购物了..." %self.name)
87
88
89 p = People("Wong",23,"深圳")
90 # print(p.__Author__)
91 # print(p)
92 # p.__privileges()
93 p.public()
94 # print(p.__priaddr)
95
96 m = Man("Wong",23,"深圳",'boy')
97 print(m.name,m.age,m.sex)
98 m.shopping()

2. 类的继承

# -*- coding:utf-8 -*-
# Author:Wong Du class SchoolMember(object):
'''
学校成员基类,用于被继承创建各类学校成员
'''
MemberCount = 0
SchMem_list = []
def __init__(self, name, age, id=None):
'''
构造函数,初始化基础环境变量
:param name:
:param age:
:param id:
'''
self.name = name
self.age = age
self.id = id def tell(self):
'''介绍方法'''
pass def enroll(self):
'''
注册方法,用于统计注册人员信息
:return:
'''
SchoolMember.MemberCount += 1
print("\033[32;1m SchoolMember [%s] is enrolled, now there are [%s] members\033[0m"
%(self.name,SchoolMember.MemberCount))
self.SchMem_list.append(self) # def __del__(self):
# '''析构函数'''
# print("\033[31;1m SchoolMember [%s] has resigned! \033[0m" %self.name) class Teather(SchoolMember):
'''
教师成员,继承父类SchoolMember,
用于创建学校成员:教师
'''
def __init__(self, name, age, course, salary, tid=None):
'''
构造函数,创建初始化教师信息
:param name:
:param age:
:param course:
:param salary:
:param tid:
'''
super(Teather, self).__init__(name, age)
self.course = course
self.salary = salary
self.tid = tid
self.enroll() def tell(self):
'''介绍方法'''
print("\033[33;1m Hi, I am your [%s] course teather, my name is [%s], nice to meet you...\033[0m"
%(self.course, self.name)) def teching(self):
'''教授课程说明'''
print("\033[34;1m Teacher [%s] is teching the [%s] course...\033[0m" %(self.name, self.course)) class Student(SchoolMember):
'''
学生成员,继承父类SchoolMember,
用于创建学校成员:学生
'''
def __init__(self, name, age, grade, sid=None):
super(Student, self).__init__(name, age)
self.grade = grade
self.sid = sid
self.enroll() def tell(self):
'''自我介绍方法'''
print("\033[33;1m Hi, My name is [%s], nice to meet you...\033[0m" %self.name) t1 = Teather('Yangyue','37','数学','10000')
t2 = Teather('Zhaoyun','28','武术','12000') s1 = Student('Caiyun','23','Python')
s2 = Student('Dudu','22','数学') t1.tell()
t2.teching()
s1.tell()
print(len(SchoolMember.SchMem_list))
# print(SchoolMember.SchMem_list[1].name)
for i in range(len(SchoolMember.SchMem_list)):
print(SchoolMember.SchMem_list[i].name)

类的继承

3. 类的多态

# -*- coding:utf-8 -*-
# Author:Wong Du class Conpany(object):
def __init__(self,type,name,money):
self.type = type
self.name = name
self.money = money class Menber(object):
def __init__(self,post,name):
self.post = post
self.name = name
@staticmethod
def Polymorphism(obj):
obj.work() class Boss(Menber):
def work(self):
print('Boss') class HR(Menber):
def work(self):
print('HR')
c1 = Conpany("电商", "云云易购", "10000000") h1 = HR('HR','wanchun')
b1 = Boss('Boss','caiyun') Menber.Polymorphism(h1)
Menber.Polymorphism(b1)

类的多态

Python中类的相关介绍的更多相关文章

  1. python PEP8相关介绍

    在学习了python相关技术之后,开始重视其开发规范,以满足代码的可读性以及可维护性.主要的是学习了PEP8-style for python code的相关内容. 代码布局 缩进:每一级4个缩进.连 ...

  2. Python面对对象相关知识总结

    很有一段时间没使用python了,前两天研究微信公众号使用了下python的django服务,感觉好多知识都遗忘了,毕竟之前没有深入的实践,长期不使用就忘得快.本博的主要目的就是对Python中我认为 ...

  3. 第7.6节 Python中类的继承机制详述

    在本章第一节,介绍了面向对象程序设计的三个特征:封装.继承和多态,前面章节重点介绍了封装和多态,由于Python语言是多态语言,对象的类型不再由继承等方式决定,而由实际运行时所表现出的具体行为来决定, ...

  4. [翻译]Mock 在 Python 中的使用介绍

    目录 Mock 在 Python 中的使用介绍 原文链接与说明 恐惧系统调用 一个简单的删除函数 使用 Mock 重构 潜在陷阱 向 'rm' 中加入验证 将文件删除作为服务 方法 1:模拟实例的方法 ...

  5. python之pandas简单介绍及使用(一)

    python之pandas简单介绍及使用(一) 一. Pandas简介1.Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据 ...

  6. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  7. 一 hadoop 相关介绍

    hadoop 相关介绍 hadoop的首页有下面这样一段介绍.对hadoop是什么这个问题,做了简要的回答. The Apache™ Hadoop® project develops open-sou ...

  8. Python的标准库介绍与常用的第三方库

    Python的标准库介绍与常用的第三方库 Python的标准库: datetime:为日期和时间的处理提供了简单和复杂的方法. zlib:以下模块直接支持通用的数据打包和压缩格式:zlib,gzip, ...

  9. Python中类的继承代码实例

    Python中类的继承代码实例 这篇文章主要介绍了Python中类的继承代码实例,本文直接给出代码及运行效果,需要的朋友可以参考下 相对于C 的继承编写,Python更简洁,而且效率也是很高的,下面编 ...

随机推荐

  1. [火星补锅] siano 神奇的线段树

    前言: 本来以为很难打的,没想到主干一次就打对了,然而把输入的b和d弄混了,这sb错误调了两个小时... 解析: 神奇的线段树.注意到有一个性质,无论怎么割草,生长速度快的一定不会比生长速度慢的矮.因 ...

  2. [LGP2758]编辑距离

    目录 题目 题目描述 输入格式 输出格式 输入输出样例 题目分析 状态转移方程 初始状态 结束状态 Code 题目 题目描述 设A和B是两个字符串.我们要用最少的字符操作次数,将字符串A转换为字符串B ...

  3. f(sinx)到底是啥

    总结一句:cosx是偶次就一定可以用.

  4. Flutter应用在夜神模拟器启动白屏问题

    Flutter应用在夜神模拟器启动白屏问题 flutter run  出现如下错误 [ERROR:flutter/shell/gpu/gpu_surface_gl.cc(39)] Failed to ...

  5. 查找最小生成树:克鲁斯克尔算法(Kruskal)算法

    一.算法介绍 Kruskal算法是一种用来查找最小生成树的算法,由Joseph Kruskal在1956年发表.用来解决同样问题的还有Prim算法和Boruvka算法等.三种算法都是贪心算法的应用.和 ...

  6. wifi 热点配置最优信道

    wifi热点服务hostapd启动需要配置hostad.conf文件,其中有一个参数channel是用来配置信道的,信道的可选参数如下: # channel 1-14 is 2.4 GHz ; cha ...

  7. 转载: VIVADO的增量综合流程

    http://xilinx.eetrend.com/content/2019/100044286.html 从 Vivado 2019.1 版本开始,Vivado 综合引擎就已经可以支持增量流程了.这 ...

  8. hdu 2473 Junk-Mail Filter(并查集)

    题意: N个邮件需要鉴别. 两种操作: 1. M X Y:X和Y是同一种邮件 2.S X:X被误判(意味着X要被它从属的那个集合"踢出去"而所有其它的邮件的关系保持不变) 问最后总 ...

  9. C++类的静态成员变量与静态成员函数

    1.类的静态成员变量 C++类的静态成员变量主要有以下特性: 1.静态成员变量需要类内定义,类外初始化 2.静态成员变量不依赖于类,静态成员变量属于全局区,不属于类的空间. 3.静态成员变量通过类名访 ...

  10. XOR算法

    原理 依据的是异或门 即同为0,异为1 0^0=0 0^1=1 1^0=1 1^1=0 对一个数据进行两次XOR运算会得到这个数据本身 所以加密时就将message和其对应的key进行一波XOR运算得 ...