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学习笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

随机推荐

  1. HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化)

    HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化) 题意分析 给出一系列的石头的数量,然后问石头能否被平分成为价值相等的2份.首先可以确定的是如果石头的价值总和为奇数的话,那 ...

  2. 【树状数组】【P2345】 奶牛集会

    传送门 Description 约翰的\(N\)头奶牛每年都会参加"哞哞大会".哞哞大会是奶牛界的盛事.集会上的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时会聚在 ...

  3. linux 常见服务端口

    Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户.提供这些服务的程序是由运行在后台的守护进程(daemons) 来执行的.守护进 ...

  4. mybatis逆向工程生成mapper报错

    Result Maps collection already contains value for xxxMapper.BaseResultMap错误解决办法一.问题描述今天在做项目时,遇到一个错误: ...

  5. [Android问答] px、dp和sp,这些单位有什么区别?

    相信每个Android新手都会遇到这个问题,希望这篇帖子能让你不再纠结. px: 即像素,1px代表屏幕上一个物理的像素点: px单位不被建议使用,因为同样100px的图片,在不同手机上显示的实际大小 ...

  6. 增强学习Reinforcement Learning经典算法梳理3:TD方法

    转自:http://blog.csdn.net/songrotek/article/details/51382759 博客地址:http://blog.csdn.net/songrotek/artic ...

  7. Html5学习2(Html表格、Html列表、Html5新元素、Canvas (坐标、路径、画圆、文本、渐变、图像))

    Html表格 1.表格中的表头:<th></th>.其中表头部分字体加粗,颜色深绿色 <h4>水平标题:</h4> <table border=& ...

  8. C++正则表达式例子

    给了策划配置公式的地方,需要将策划配置的公式文本转化为可执行的脚本代码:比如:self->mHp*2+target->2mMp*GetHit()+ self_mon->4mDan/1 ...

  9. quick 用系统浏览器打开url

    需求描述: 在我们的游戏里面增加一个链接,直接用浏览器打开,进入到对应网站,进行一些支付活动. 解决: 于是我去百度了一下,发现了这篇文章,http://blog.csdn.net/teng_onth ...

  10. Java并发—— 关键字volatile解析

    简述 关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制,当一个变量定义为volatile,它具有内存可见性以及禁止指令重排序两大特性,为了更好地了解volatile关键字,我们可以 ...