本文主要介绍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. dwr简单应用及一个反向ajax消息推送

    由于项目中最近需要用到dwr实现一些功能,因此在网上和dwr官网上找了一些资料进行学习.在此记录一下.(此处实现简单的dwr应用和dwr消息反向推送) 一.引入dwr的包 <dependency ...

  2. Noip模拟38 2021.8.13

    T1 a 跟入阵曲很像,但是忘记入阵曲这题的思路是什么了 这里再提一下,入阵曲是子矩阵和是$k$的倍数,这道题目是子矩阵和是在一段区间内$[L,R]$ 因为这道题$n$特别小,$m$较大,考虑复杂度为 ...

  3. 数列极限计算中运用皮亚诺Taylor展开巧解

    这是讲义里比较精华的几个题目,今晚翻看也是想到了,总结出来(处理k/n2形式). 推广式子如下: 例题如下:

  4. 还在用canvas画格子吗?文字烟花效果更不错噢

    大家好,我是小丞同学,一名前端爱好者 欢迎访问博主的个人网站:一口奶盖 "在人间贩卖声音 等凑够满天星辰 放烟花给你看" 上次的烟花有些许平淡,这次来放大招了,让你的名字在天空绽放 ...

  5. Xpath语法学习记录

    高级参考:https://blog.csdn.net/wudaoshihun/article/details/82226122 举例: 1 <!DOCTYPE html> 2 <ht ...

  6. Vue脚手架最新版本安装使用

    现在很多的插件如Vant 这类的样式框架,都去兼容了Vue的3.0版本,所以我总结一下如何去简单的搭建一个Vue3.0的框架 开始 一,如何安装 在这里说明一下,Vue脚手架版本,和Vue版本是两个东 ...

  7. mysql查询表名和列名字

    -- 登录yellowcong 数据库 mysql -uroot -proot yellowcong -- 查看当前数据库 select database() -- 查看数据库里面的表 --table ...

  8. no active checks on server [192.168.1.101:10051]: host [ ] not found

    1.查看/etc/zabbix/zabbix_agentd.conf的 hostanme 2.查看zabbix-web中,主机名称 3.将zabbix-web的主机名改成/etc/zabbix/zab ...

  9. SpringCloud 2020.0.4 系列之 Bus

    1. 概述 老话说的好:会休息的人才更会工作,身体是革命的本钱,身体垮了,就无法再工作了. 言归正传,之前我们聊了 SpringCloud 的 分布式配置中心 Config,文章里我们聊了config ...

  10. Redis去重方法

    目录 1.基于 set 2.基于 bit 3.基于 HyperLogLog 4. 基于bloomfilter 这篇文章主要介绍了Redis实现唯一计数的3种方法分享,本文讲解了基于SET.基于 bit ...