Python2.7 学习笔记 (三)—— 类,继承,重载
来源:互联网 发布:文字制作图片软件 编辑:程序博客网 时间:2024/05/03 13:57
16:56 2012-3-9
声明:以下代码都是在Python2.7+Winxp中执行通过
[面向对象]
1.类的定义
#-*-coding:utf-8-*-
class student:
name = '' #定义类的公有属性,可直接访问
age =0
class human :
sex =''
height=0
2.类的继承
class student(human): #只能继承父类的共有属性和共有方法,私有的属性和方法不能继承
3.类的使用
#-*-coding:utf-8-*-
tom = student() #实例化student类
tom.name='tome'
print tom.name
print tom.age
4.类的变量和方法
__开始的变量,是私有变量,只有在类内部可以访问,要通过self.__name 访问,相当于private
可以通过函数来取得和修改私有变量
其他变量,都属于公有变量,相当于public
4.1类的私有变量
#-*-coding:utf-8-*-
class human:
name ='human'
age =18
__sex='male' # 私有变量
def getSex(self):
return self.__sex
def setSex(self,sex): #self必须是第一个参数
self.__sex=sex
class student(human):
grade =0
print human.name
print student.grade
print student.age #继承自父类human
#print human.__sex #这里会报错,私有变量不能直接访问
h= human()
print h.getSex()
h.setSex('female') #设置sex 为female
print h.getSex()
4.2类的私有方法
#-*-coding:utf-8-*-
class human:
name ='human'
age =18
__sex='male' # 私有变量
def __privateMethod(self): #类的私有方法
print "I am a class private method"
def callPrivateMethod(self): #调用类私有方法,只有类内部可以调用
self.__privateMethod() #调用的时候,需要加self前缀
class student(human):
grade =0
h= human()
h.callPrivateMethod()
4.3.类的专有方法 Special Methods
__init__ 构造函数,生成对象时被调用
__del__ 析构函数,释放对象时被调用
__add__ 加晕死
__mul__ 乘运算
__cmp__ 比较运算
__repr__ 打印,转换
__setitem__ 按照索引赋值
__getitem__ 按照索引取值
__len__ 获得长度
__call__ 函数调用
#-*-coding:utf-8-*-
class human:
__name=''
self.__name=name
self.__age=age
def show(self): # def 和class 之间要有缩进
print "name is:"+self.__name
print "age is:"+ str(self.__age) #数字记得要转换成字符串
tom = human("tom",18);
tom.show();
5.类的多重继承
class student (human,father,superman):
基础顺序从左往右,子类的变量和方法会覆盖父类的同名变量和方法
#-*-coding:utf-8-*-
class human:
name ='human'
nickname='h'
def show(self): #def 和class 之间要有缩进
print "name is:"+self.name
print "nickname:"+self.nickname
class teacher:
name ='teacher'
nickname='t'
def show(self): #def 和class 之间要有缩进
print "name is:"+self.name
print "nickname:"+self.nickname
class boy(human,teacher): #继承顺序从左往右:human,teacher
nickname="boy"; #父类里也有nickname,但是这个值会被子类覆盖掉
class girl(teacher,human): #继承顺序从左往右:teacher,human
nickname="girl";
b = boy();
b.show();#输出 name is human ,nickname is boy
g = girl();
g.show();#输出 name is teacher,nickname is girl
6.重载
子类中,使用和父类同样的方法名,就可以覆盖父类的方法
#-*-coding:utf-8-*-
#重载
class human:
def show(self): #def 和class 之间要有缩进
print "name is father"
class boy(human):
def show(self): #def 和class 之间要有缩进
print "name is boy"
b = boy();
b.show();#输出 name is boy
7.运算符重载
python中的运算符,其实也是对应相应的方法,所以,运算符重载,就是相应的方法重载
了解这个之后,运算符重载就和普通重载没什么区别
+ __add__
- __sub__
* __mul__
/ __div__
% __mod__
** __pow__
#运算符重载
class mylist:
__params =[]
def __init__(self,*args): #重载__init__方法, *args为可变参数
self.__params=[] #初始化
for arg in args:
self.__params.append(arg) #把输入参数都存到params里
def __add__(self,n): # 重载__add__方法; n 表示被加的那个数
for i in range(0,len(self.__params)):
self.__params[i] +=n; #params里的数都加1
def show(self):
print self.__params
list = mylist(1,2,3,4,5)
list+ 1 #1就相当于__add__(self,n) 里的n
list.show() #输出[2.3,4,5,6]
18:38 2012-3-12
END
声明:以下代码都是在Python2.7+Winxp中执行通过
[面向对象]
1.类的定义
#-*-coding:utf-8-*-
class student:
name = '' #定义类的公有属性,可直接访问
age =0
class human :
sex =''
height=0
2.类的继承
class student(human): #只能继承父类的共有属性和共有方法,私有的属性和方法不能继承
3.类的使用
#-*-coding:utf-8-*-
tom = student() #实例化student类
tom.name='tome'
print tom.name
print tom.age
4.类的变量和方法
__开始的变量,是私有变量,只有在类内部可以访问,要通过self.__name 访问,相当于private
可以通过函数来取得和修改私有变量
其他变量,都属于公有变量,相当于public
4.1类的私有变量
#-*-coding:utf-8-*-
class human:
name ='human'
age =18
__sex='male' # 私有变量
def getSex(self):
return self.__sex
def setSex(self,sex): #self必须是第一个参数
self.__sex=sex
class student(human):
grade =0
print human.name
print student.grade
print student.age #继承自父类human
#print human.__sex #这里会报错,私有变量不能直接访问
h= human()
print h.getSex()
h.setSex('female') #设置sex 为female
print h.getSex()
4.2类的私有方法
#-*-coding:utf-8-*-
class human:
name ='human'
age =18
__sex='male' # 私有变量
def __privateMethod(self): #类的私有方法
print "I am a class private method"
def callPrivateMethod(self): #调用类私有方法,只有类内部可以调用
self.__privateMethod() #调用的时候,需要加self前缀
class student(human):
grade =0
h= human()
h.callPrivateMethod()
4.3.类的专有方法 Special Methods
__init__ 构造函数,生成对象时被调用
__del__ 析构函数,释放对象时被调用
__add__ 加晕死
__mul__ 乘运算
__cmp__ 比较运算
__repr__ 打印,转换
__setitem__ 按照索引赋值
__getitem__ 按照索引取值
__len__ 获得长度
__call__ 函数调用
#-*-coding:utf-8-*-
class human:
__name=''
__age=0
self.__name=name
self.__age=age
def show(self): # def 和class 之间要有缩进
print "name is:"+self.__name
print "age is:"+ str(self.__age) #数字记得要转换成字符串
tom = human("tom",18);
tom.show();
5.类的多重继承
class student (human,father,superman):
基础顺序从左往右,子类的变量和方法会覆盖父类的同名变量和方法
#-*-coding:utf-8-*-
class human:
name ='human'
nickname='h'
def show(self): #def 和class 之间要有缩进
print "name is:"+self.name
print "nickname:"+self.nickname
class teacher:
name ='teacher'
nickname='t'
def show(self): #def 和class 之间要有缩进
print "name is:"+self.name
print "nickname:"+self.nickname
class boy(human,teacher): #继承顺序从左往右:human,teacher
nickname="boy"; #父类里也有nickname,但是这个值会被子类覆盖掉
class girl(teacher,human): #继承顺序从左往右:teacher,human
nickname="girl";
b = boy();
b.show();#输出 name is human ,nickname is boy
g = girl();
g.show();#输出 name is teacher,nickname is girl
6.重载
子类中,使用和父类同样的方法名,就可以覆盖父类的方法
#-*-coding:utf-8-*-
#重载
class human:
def show(self): #def 和class 之间要有缩进
print "name is father"
class boy(human):
def show(self): #def 和class 之间要有缩进
print "name is boy"
b = boy();
b.show();#输出 name is boy
7.运算符重载
python中的运算符,其实也是对应相应的方法,所以,运算符重载,就是相应的方法重载
了解这个之后,运算符重载就和普通重载没什么区别
+ __add__
- __sub__
* __mul__
/ __div__
% __mod__
** __pow__
#运算符重载
class mylist:
__params =[]
def __init__(self,*args): #重载__init__方法, *args为可变参数
self.__params=[] #初始化
for arg in args:
self.__params.append(arg) #把输入参数都存到params里
def __add__(self,n): # 重载__add__方法; n 表示被加的那个数
for i in range(0,len(self.__params)):
self.__params[i] +=n; #params里的数都加1
def show(self):
print self.__params
list = mylist(1,2,3,4,5)
list+ 1 #1就相当于__add__(self,n) 里的n
list.show() #输出[2.3,4,5,6]
18:38 2012-3-12
END
- Python2.7 学习笔记 (三)—— 类,继承,重载
- C++ 学习笔记(三):面向对象编程:类,对象,继承,重载
- 【Python2.7 学习笔记】Python 基础(三)切片
- Python2.7 学习笔记 (一)——基础知识
- python2.7学习笔记(5) ——函数
- python2.7学习笔记(8) ——模块
- python2.7学习笔记(-)
- 恶补java(三)——包、继承、重载、覆盖
- C/C++编程细节(三)——类、继承、模板、运算符重载
- python2.7 学习笔记 (四)——异常
- 【Python2.7 学习笔记】Python 基础(三)迭代 + 列表生成式
- 【Python2.7 学习笔记】函数(一)
- 【Python2.7 学习笔记】函数(二)
- Python2.7学习笔记(一)
- Python2.7学习笔记(二)
- C#学习笔记(三)—–C#高级特性:运算符重载
- javascript面向对象学习笔记(三)——继承
- C++学习笔记—OOP三大特性之继承
- DefaultView 的作用
- TweenLite
- 优酷土豆合并
- 关于装visual sqlserver 2008
- C#中字符转换问题详解
- Python2.7 学习笔记 (三)—— 类,继承,重载
- 第四周 任务二
- biset传参
- iOS笔记
- 使用元件
- C语言的5种存储类以及关键字volatile、restrict
- 《java解惑》 笔记
- 第四周上机任务--任务一--用VS2008设计一个三角形类--给各个成员函数定义
- 第四周任务一