python_day7学习笔记
- 类
1)创建一个类
#coding=utf-8
__author__ = 'Administrator' class Employee:
'所有员工的基类'
empCount = 0 def __init__(self, nm, treatment):
self.name = nm
self.salary = treatment
Employee.empCount += 1 def displayCount(self):
print "Total Employee %d" % Employee.empCount def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary
在Employee类的定义中,定义了三个方法:__init__()和displayCount()、displayEmployee()。其中__init__()初始化实例参数。
2)创建实例
"创建 Employee 类的第一个对象"
emp1 = Employee('Zara', 2000)
"创建 Employee 类的第二个对象"
emp2 = Employee('Manni', 9000)
3)访问实例属性
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount 输出结果:
Name : Zara , Salary: 2000
Name : Manni , Salary: 9000
Total Employee 2
- 类的继承
class Child(Employee): #定义子类
def __init__(self, nm, treatment, test):
Employee.__init__(self, nm, treatment)
self.ad = test def displayEmployee(self):
Employee.displayEmployee(self)
print "Test :",self.ad 创建实例及访问属性方法:
emp1 = Employee('Zara', 2000)
emp2 = Child('yd',800,900) emp1.displayEmployee()
print "Total Employee %d" % Employee.empCount
emp2.displayEmployee() 输出结果:
Name : Zara , Salary: 2000
Total Employee 2
Name : yd , Salary: 800
Test : 900
从结果可以看出,子类继承了父类实例方法输出。
也可以继承多个类,如class C(A,B),继承类A和B
- 内置类的属性
__dict__ : 类的属性(包含一个字典,由类的数据属性组成)
__doc__ :类的文档字符串
__name__: 类名
__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
__bases__ : 类的所有父类构成元素(包含了以个由所有父类组成的元组) print Child.__name__
print Employee.__doc__
print Employee.__module__
print Employee.__dict__
print Employee.__bases__ 输出结果:
Child
所有员工的基类
__main__
{'__module__': '__main__', 'displayCount': <function displayCount at 0x0253EA30>, 'empCount': 0, 'displayEmployee': <function displayEmployee at 0x0253E870>, '__doc__': '\xe6\x89\x80\xe6\x9c\x89\xe5\x91\x98\xe5\xb7\xa5\xe7\x9a\x84\xe5\x9f\xba\xe7\xb1\xbb', '__init__': <function __init__ at 0x0253E930>}
()
- 对象的销毁
析构函数 __del__ ,__del__在对象消逝的时候被调用,当对象不再被使用时,__del__方法运行。
举例:
#coding=utf-8
__author__ = 'Administrator' # Filename: SchoolMember.py
# 面向对象的实例,学校成员类 class SchoolMember:
# 总人数,这个是类的变量
sum_member = 0 # __init__方法在类的对象被创建时执行
def __init__(self, name):
self.name = name
SchoolMember.sum_member += 1
print "学校新加入一个成员:%s" % self.name
print "现在有成员%d人" % SchoolMember.sum_member # 自我介绍
def say_hello(self):
print "大家好,我叫:%s" % self.name # __del__方法在对象不使用的时候运行
def __del__(self):
SchoolMember.sum_member -= 1
print "%s离开了,学校还有%d人" % (self.name, SchoolMember.sum_member) # 老师类继承学校成员类
class Teacher(SchoolMember):
def __init__(self, name, salary):
SchoolMember.__init__(self, name)
self.salary = salary def say_hello(self):
SchoolMember.say_hello(self)
print "我是老师,我的工资是:%d" % self.salary def __del__(self):
SchoolMember.__del__(self)
# 学生类
class Student(SchoolMember):
def __init__(self, name, mark):
SchoolMember.__init__(self, name)
self.mark = mark def say_hello(self):
SchoolMember.say_hello(self)
print "我是学生,我的成绩是:%d" % self.mark
def __del__(self):
SchoolMember.__del__(self) t = Teacher("老黄", 3000)
t.say_hello()
s = Student("小河", 77)
s.say_hello() 结果输出:
学校新加入一个成员:老黄
现在有成员1人
大家好,我叫:老黄
我是老师,我的工资是:3000
学校新加入一个成员:小河
现在有成员2人
大家好,我叫:小河
我是学生,我的成绩是:77
小河离开了,学校还有1人
老黄离开了,学校还有0人
- 类的私有方法
举例:
#coding=utf-8
__author__ = 'Administrator' class people:
name = 'jack' #公有的类属性
__age = 12 #私有的类属性 p = people() print p.name #正确
print people.name #正确
print p.__age #错误,不能在类外通过实例对象访问私有的类属性
print people.__age #错误,不能在类外通过类对象访问私有的类属性
- 静态方法和类方法
类方法:是类对象所拥有的方法,需要用修饰器"@classmethod"来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以"cls"作为第一个参数(当然可以用其他名称的变量作为其第一个参数,但是大部分人都习惯以'cls'作为第一个参数的名字,就最好用'cls'了),能够通过实例对象和类对象去访问。
#coding=utf-8
__author__ = 'Administrator' class people:
country = 'china' #类方法,用classmethod来进行修饰
@classmethod
def getCountry(cls):
return cls.country @classmethod
def setCountry(cls,country):
cls.country = country p = people()
print p.getCountry() #可以通过实例对象引用
print people.getCountry() #可以通过类对象引用 p.setCountry('japan') print p.getCountry()
print people.getCountry() 输出结果:
china
china
japan
japan
@staticmethod只能通过类对象引用,不能通过实例对象引用
python_day7学习笔记的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- BZOJ3223:文艺平衡树——超详细题解
http://www.lydsy.com/JudgeOnline/problem.php?id=3223 题面复制于洛谷. 题目背景 这是一道经典的Splay模板题——文艺平衡树. 题目描述 您需要写 ...
- LOJ2587:[APIO2018]铁人两项——题解
https://loj.ac/problem/2587#submit_code (题面来自LOJ) 考试时候发觉树很可做,并且写了一个dp骗到了树的分. 苦于不会圆方树……现在回来发现这题还是很可做的 ...
- BZOJ2588 Count on a tree 【树上主席树】
2588: Spoj 10628. Count on a tree Time Limit: 12 Sec Memory Limit: 128 MB Submit: 7577 Solved: 185 ...
- 洛谷 P4964 绫小路的特别考试 解题报告
P4964 绫小路的特别考试 题目背景 这世界上「胜利」便是一切.无关乎过程. 要付出多少牺牲都无所谓.只要最后我「胜出」那就行了. 题目描述 一场新的特别考试来临了,这次的考试内容是(wan e d ...
- HDOJ(HDU).1025 Constructing Roads In JGShining's Kingdom (DP)
HDOJ(HDU).1025 Constructing Roads In JGShining's Kingdom (DP) 点我挑战题目 题目分析 题目大意就是给出两两配对的poor city和ric ...
- 【树形DP】【UVA10859】 Placing Lampposts
传送门 Description 给定一个\(n\)个点\(m\)条边的无向无环图,选择尽量少的节点,使得所有边都至少有一个顶点被选择.在这个基础上,要求有两个顶点被选择的边数尽可能大 Input 多组 ...
- STL之二:vector容器用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8507394 vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组. ...
- DFS搜索题素数环
素数环: 输入整数1,2,3,4,5,···,n组成一个环,使得相邻两个整数之和均为素数. 输出时从整数1开始逆时针排列.同一个环应恰好输出一次.n<=16. Sample: input: 6 ...
- js:鼠标移动到文字显示div,移出文字div显示,鼠标能移进div
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...
- 图书馆排序(Library Sort)
思路简介,大概意思是说,排列图书时,如果在每本书之间留一定的空隙,那么在进行插入时就有可能会少移动一些书,说白了就是在插入排序的基础上,给书与书之间留一定的空隙,这个空隙越大,需要移动的书就越少,这是 ...