本文主要介绍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. [敏捷软工团队博客]The Agiles 团队介绍&团队采访

    项目 内容 课程:北航-2020-春-敏捷软工 博客园班级博客 作业要求 团队作业-团队介绍和采访 团队名称来源 The Agile is The Agile. 敏捷就是敏捷.我们只是敏捷的践行者罢了 ...

  2. filebeat收集日志到elsticsearch中并使用ingest node的pipeline处理

    filebeat收集日志到elsticsearch中 一.需求 二.实现 1.filebeat.yml 配置文件的编写 2.创建自定义的索引模板 3.加密连接到es用户的密码 1.创建keystore ...

  3. hash 哈希表 缓存表

    系统初始hash表为空,当外部命令执行时,默认会从 PATH路径下寻找该命令,找到后会将这条命令的路径记录到 hash表中,当再次使用该命令时,shell解释器首先会查看hash 表,存在将执行之,如 ...

  4. 【mysql3】我的大学teacher课程进行中|持续更新系列!

    1.做一下powerdesigner的画图 2.所有的创建表格 .....1 修改字段的数据类型:alter table 表名 modify 字段名 新数据类型; 修改字段名: alter table ...

  5. istio ServiceMesh

    什么是ServiceMesh?什么是Istio? 微服务的一种概念,随着微服务的来临,衍生出一系列的问题,比如服务发现.负载均衡.路由.流量控制.服务间通讯的可靠性.微服务的监控等一系列的问题.使用a ...

  6. PTA 是否二叉搜索树 (25分)

    PTA 是否二叉搜索树 (25分) 本题要求实现函数,判断给定二叉树是否二叉搜索树. 函数接口定义: bool IsBST ( BinTree T ); 其中BinTree结构定义如下: typede ...

  7. Buildroot 用户手册 (中文)

    文章目录 I. Getting started 1. About Buildroot 2. System requirements 2.1. Mandatory packages 2.2. Optio ...

  8. linux下端口占用

    1, netstat -tunlp|grep 1235 2,kill -9 18520

  9. String你会用吗?

    1. 如果不是在循环体中进行字符串拼接的话,直接使用 String 的 "+" 就好了. 2. 单线程循环中操作大量字符串数据 → StringBuilder.append() 3 ...

  10. 部署一个支持Dapr 的Kubernetes APISIX Ingress

    在这篇文章中,我将展示如何创建一个 APISIX控制器,该控制器在 Kubernetes 集群中公开启用 Dapr 的应用程序. 本质上,APISIX控制器将配置相同的标准 Dapr annotati ...