设为首页 加入收藏

TOP

python类及其方法(二)
2017-09-30 16:41:47 】 浏览:10087
Tags:python 及其 方法
(self,n,a,w) 6 self.grade = g 7 #覆写父类的方法 8 def speak(self): 9 print("%s is speaking: I am %d years old,and I am in grade %d"%(self.name,self.age,self.grade)) 10 11 s = student('ken',20,60,3) 12 s.speak()

 

2.类的多重继承
class 类名(父类1,父类2,....,父类n)
<语句1>

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索,即方法在子类中未找到时,从左到右查找父类中是否包含方法

#另一个类,多重继承之前的准备  

1 class speaker():  
2     topic = ''  
3     name = ''  
4     def __init__(self,n,t):  
5         self.name = n  
6         self.topic = t  
7     def speak(self):  
8         print("I am %s,I am a speaker!My topic is %s"%(self.name,self.topic))  

#多重继承  

1 class sample(speaker,student):  
2     a =''  
3     def __init__(self,n,a,w,g,t):  
4         student.__init__(self,n,a,w,g)  
5         speaker.__init__(self,n,t)  
6 
7 test = sample("Tim",25,80,4,"Python")  
8 test.speak()#方法名同,默认调用的是在括号中排前地父类的方法

 

 

四、类的专业方法

Python 类可以定义专用方法,专用方法是在特殊情况下或当使用特别语法时由 Python 替你调用的,而不是在代码中直接调用(象普通的方法那样)。

1 __init__
类似于构造函数

1 #!/usr/local/bin/python
2 class Study:
3         def __init__(self,name=None):
4                 self.name = name
5         def say(self):
6                 print self.name
7 study = Study("Badboy")
8 study.say()

2 __del__
类似于析构函数

 1 #!/usr/local/bin/python
 2 class Study:
 3         def __init__(self,name=None):
 4                 self.name = name
 5         def __del__(self):
 6                 print "Iamaway,baby!"
 7         def say(self):
 8                 print self.name
 9 study = Study("zhuzhengjun")
10 study.say()

3__repr__
使用repr(obj)的时候,会自动调用__repr__函数,该函数返回对象字符串表达式,
用于重建对象,如果eva l(repr(obj))会得到一个对象的拷贝。

 1 #!/usr/local/bin/python
 2 class Study:
 3         def __init__(self,name=None):
 4                 self.name = name
 5         def __del__(self):
 6                 print "Iamaway,baby!"
 7         def say(self):
 8                 print self.name
 9         def __repr__(self):
10                 return "Study('jacky')"
11 study = Study("zhuzhengjun")
12 study.say()
13 print type(repr(Study("zhuzhengjun"))) # str
14 print type(eva l(repr(Study("zhuzhengjun")))) # instance
15 
16 study = eva l(repr(Study("zhuzhengjun")))
17 
18 study.say()

4__str__
Python能用print语句输出内建数据类型。有时,程序员希望定义一个类,要求它的对象也能用print语句输出。Python类可定义特殊方法__str__,为类的对象提供一个不正式的字符串表示。如果类的客户程序包含以下语句:

print objectOfClass
那么Python会调用对象的__str__方法,并输出那个方法所返回的字符串。

 1 #!/usr/local/bin/python
 2 
 3 class PhoneNumber:
 4         def __init__(self,number):
 5                  self.areaCode=number[1:4]
 6                  self.exchange=number[6:9]
 7                  self.line=number[10:14]
 8 
 9         def __str__(self):
10                 return "(%s) %s-%s"%(self.areaCode,self.exchange,self.line)
11 
12 def test():
13          newNumber=raw_input("Enter phone number in the form. (123) 456-7890: \n")
14          phone=PhoneNumber(newNumber)
15          print "The phone number is:"
16          print phone
17 
18 if__name__=="__main__":
19          test()

方法__init__接收一个形如"(xxx) xxx-xxxx"的字符串。字符串中的每个x都是电话号码的一个位数。方法对字符串进行分解,并将电话号码的不同部分作为属性存储。

方法__str__是一个特殊方法,它构造并返回PhoneNumber类的一个对象的字符串表示。解析器一旦遇到如下语句:

print phone

就会执行以下语句:

print phone.__str__()

程序如果将PhoneNumber对象传给内建函数str(如str(phone)),或者为PhoneNumber对象使用字符串格式化运算符%(例如"%s"%phone),Python也会调用__str__方法。

5__cmp __
比较运算符,0:等于 1:大于 -1:小于

class Study:  
     def __cmp__(self, other):  
         if other > 0 :  
             return 1  
         elif other < 0:  
             return - 1  
         else:  
             return 0  
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇django-request对象 下一篇Python 模块

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目