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 ...
 
随机推荐
- BZOJ2243:[SDOI2011]染色——题解
			
http://www.lydsy.com/JudgeOnline/problem.php?id=2243 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点 ...
 - python基础之魔法方法
			
由于hexo自带的markdown渲染引擎对双下划线做了转义,在正文中看到的魔法方法前后都没有双下划线 setattr.getattr.delattr 可以拦截对对象属性的访问 setattr函数是用 ...
 - 【题解】回文串 APIO 2014 BZOJ 3676 COGS 1985 Manacher+后缀数组+二分
			
这题可以用回文自动机来做,但是我并没有学,于是用Manacher+SA的做法O(nlogn)水过 首先,看到回文串就能想到用Manacher 同样还是要利用Manacher能不重复不遗漏地枚举每个回文 ...
 - Android UI开发第二十四篇——Action Bar
			
Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式.在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为acti ...
 - Lucene4.6至 Lucene6.6的每个迭代对API的改动
			
由于项目需求,需要将Lucene4.6升级到Lucene6.6,因此我对这之间的所有重要的API改动做了搜集:特别重要的改变加粗显示. Lucene4.7改动: LUCENE-5405: Make S ...
 - 51Nod 1013 3的幂的和    快速幂 | 乘法逆元 | 递归求和公式
			
1.乘法逆元 直接使用等比数列求和公式,注意使用乘法逆元 ---严谨,失细节毁所有 #include "bits/stdc++.h" using namespace std; #d ...
 - HDU 2154 跳舞毯 | DP | 递推 | 规律
			
Description 由于长期缺乏运动,小黑发现自己的身材臃肿了许多,于是他想健身,更准确地说是减肥. 小黑买来一块圆形的毯子,把它们分成三等分,分别标上A,B,C,称之为“跳舞毯”,他的运动方式是 ...
 - unity ugui缩放+移动
			
本文仅仅记录自己在工作中踩到的ugui的坑.并讲述如何填的坑. 干货罗列在前,不愿意看的,拿东西走人,自己研究: RectTransform m_Rect m_Rect.localPosition m ...
 - 【poj2464】树状数组
			
这道题..太特么多细节了.. 题意:在平面直角坐标系中给你N个点,stan和ollie玩一个游戏,首先stan在竖直方向上画一条直线,该直线必须要过其中的某个点,然后ollie在水平方向上画一条直线, ...
 - 【BZOJ】1486 [HNOI2009]最小圈
			
[算法]二分+spfa [题解]据说这个叫分数规划? 0-1分数规划 二分答案a,则对于任意的环有w/k≤a即w-ak≤0,若满足条件则a变小,否则a变大. 因为w=w1+w2+...+wk,所以变形 ...