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 ...
随机推荐
- BZOJ4552:[HEOI2016/TJOI2016]排序——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4552 https://www.luogu.org/problemnew/show/P2824 在2 ...
- spring的RestTemplate使用指南
前言:现在restful接口越来越广泛,而如今很多接口摒弃了传统的配置复杂的webService开发模式,在java领域只需要很简单的springMvc就可以声明为一个控制器,再加上service层, ...
- The Usage of Pymongo
Install pymongo document install pymongo from the tar package download from website python setup.y i ...
- git安装配置和使用
## 安装git服务器 ## 安装git sudo apt-get install git ## 建立git用户 sudo adduser git ## 修改git用户 * 设置不能登录 vim /e ...
- hibernate、mybatis、beetsql的学习
先推荐两篇文章吧: https://my.oschina.net/xiandafu/blog/617542 http://blog.csdn.net/xiandafu/article/details/ ...
- HDU2833 最短路 floyd
WuKong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- Android SearchView结合Filter实现列表检索功能使用总结
下面贴出主要代码: <span style="font-size:14px;"> public class MainActivity ex ...
- EF数据更新时候异常情况一
在不熟练EF的时候有时更新数据时候会报以下异常: 错误原因:此时操作的实体不是从数据库里获取的.而是自己new出来的实体然后赋值的.EF此时的存储池中已经有了这个实体,在new一个对象ID相同就不能共 ...
- npm 淘宝镜像安装以及安装报错window_nt 6.1.7601 解决
http://www.cnblogs.com/ycxhandsome/p/6562980.html npm config set proxy null npm config set https-pro ...
- HDFS error
错误信息描述: HDFS error: could only be replicated to 0 nodes, instead of 1;以及由此衍生出来的种种奇葩问题(具体的错误信息见后面),下面 ...