本文主要介绍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. 2020BUAA软工个人博客作业-软件案例分析

    2020BUAA软工个人博客作业-软件案例分析 17373010 杜博玮 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分 ...

  2. 按照工业标准1英寸=25.4mm,而在电子元件成像领域Sensor尺寸1英寸=16mm。

    按照工业标准1英寸=25.4mm,而在电子元件成像领域Sensor尺寸1英寸=16mm. 我们平常所说的CCD/CMOS的尺寸,实际上是指Sensor对角线的长度,这一点跟我们平常所说的屏幕尺寸是一样 ...

  3. allegro查看线宽的方法

  4. PyPi到底是什么?pypi有啥作用?PyPi和pip有何渊源?

    转载:https://blog.csdn.net/weixin_42139375/article/details/82711201 可能有很多刚入行不久的朋友们,每天都在用pip 命令install ...

  5. 原串反转 牛客网 程序员面试金典 C++ Python

    原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniS ...

  6. 使用gitlab runner 进行CI(四):使用Gitlab Page托管项目文档

    目录 1.什么是Gitlab Pages 2.开启Gitlab Pages 3.基本过程 4.托管markdown文档 4.1 安装sphinx等依赖 4.2 配置项目的sphinx配置 4.3 编写 ...

  7. Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存

    一. Canal 简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同 ...

  8. 史上最全的Excel导入导出之easyexcel

    喝水不忘挖井人,感谢阿里巴巴项目组提供了easyexcel工具类,github地址:https://github.com/alibaba/easyexcel 文章目录 环境搭建 读取excel文件 小 ...

  9. updatexml和extractvalue函数报错注入

    updatexml()函数报错注入 updatexml (XML_document, XPath_string, new_value); 第一个参数:XML_document是String格式,为XM ...

  10. 【linux系统】命令学习(八)bash 编程实战学习

    常见shell : bash  sh zsh windows: git bash    cygwin MAC : terminal iterm netstat 是linux下用于显示网络状态的命令.通 ...