本文主要介绍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. VS2019、Qt5.12及QGis3.16开发常见问题汇总

    在C++.Qt软件开发过程中,常常遇到一些编译错误或警告:本文将VS2019.Qt5.12.10和QGis3.16.10的二次开发过程常见的问题做了整理,供大家参考,也便于日后查阅.该内容分为四部分: ...

  2. STM32时钟系统之利用 systick 定时器来实现准确的延时。

    本篇文章带着大家来认识一下 STM32 的时钟系统,以及利用 systick 定时器来实现一个比较准确的延时. 我们首先从时钟说起,时钟在MCU中的作用,就好比于人类的心脏一样不可或缺.STM32 的 ...

  3. Java RMI学习与解读(二)

    Java RMI学习与解读(二) 写在前面 接上篇文章,这篇主要是跟着看下整个RMI过程中的源码并对其做简单的分析 RMI源码分析 还是先回顾下RMI流程: 创建远程对象接口(RemoteInterf ...

  4. Java设计模式——模板设计模式

    模板设计模式 1.模板模式简介 模板模式(Template ):模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑 ...

  5. Shadertoy 教程 Part 2 - 圆和动画

    Note: This series blog was translated from Nathan Vaughn's Shaders Language Tutorial and has been au ...

  6. 最短路spaf及dijkstra模板

    spaf的双端队列优化: #include<bits/stdc++.h> #define ll long long const ll maxn=210000; using namespac ...

  7. 关于Asp.net core配置信息读取的源码分析梳理

    概述 我们都知道asp.net core配置信息的读取离不开IConfigurationSource和IConfigurationProvider这两个类,ConfigurationSource可以提 ...

  8. 对于multitaper多窗口谱估计的理解及步骤 (对应matlab中pmtm函数)谱减法相关

    对于多窗口谱估计的理解 目录 对于多窗口谱估计的理解 0. 缘起 1. PMTM 含义 2. 与我们常用的周期谱估计的区别 3. 计算过程 5. 多窗/单窗谱估计结果对比 6. 程序如何生成多窗 - ...

  9. 『学了就忘』Linux基础命令 — 38、Linux中光盘的挂载

    目录 步骤一:创建一个空目录 步骤二:找到光盘的设备文件名称 步骤三:挂载光盘 步骤四:访问关盘中的数据 步骤五:卸载挂载点 问题:挂载点为什么要使用空目录 提示:关于Linux系统中光盘的挂载,我们 ...

  10. 1个月连载30个设计模式真实案例(附源码),挑战年薪60W不是梦

    本文所有内容均节选自<设计模式就该这样学> 本文自2012年10月29日起持续连载,请大家持续关注.... 序言 Design Patterns: Elements of Reusable ...