码迷,mamicode.com
首页 > 其他好文 > 详细

类的继承、类的属性总结、类的方法总结

时间:2018-01-11 23:58:18      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:python 1   重用   passwd   ret   pytho   释放   red   字符   多重继承   

类的继承

继承是相对两个类而言的父子关系,子类继承了父类的所有公有属性和方法,继承可以重用已经存在的方法和属性,减少代码的重复编写,Python 在类名后使用一对括号来表示继承关系,括号中的类即为父类,如 class Myclass(ParentClass) 表示 Myclass(子类) 继承了 ParentClass(父类) 的方法和属性

#!/usr/bin/python

class People(object):
color = ‘yellow‘

def think(self):
    print "I am a thinker"

class Chinese(People): # 这里表示 Chinese 继承了 People
pass

cn = Chinese() # 因为 Chinese 继承了 People ,所以可以直接调用 People 里面的属性和方法
print cn.color
cn.think()

如果父类定义了 init 方法,子类必须显式调用父类的 init 方法:
!/usr/bin/python

class People(object):
color = ‘yellow‘

def __init__(self, c):
    print "Init...."

def think(self):
    print "I am a thinker"

class Chinese(People):
def init(self):
People.init(self,‘red‘) # 显式调用父类的init方法

cn = Chinese()
多重继承即一个子类可以继承多个父类
#!/usr/bin/python

class A(object):
def aaa(self):
print "aaa"

class B(object):
def bbb(self):
print "bbb"

class C(A, B): # 子类 C 同时继承了两个父类 A 和 B
pass

cn = C()
cn.aaa() # 可以直接调用父类的方法
cn.bbb()

当父类中出现多个自定义的init方法时,多重继承只执行第一个父类的init方法,其他不执行:
[root@localhost ~]# cat 1.py
#!/usr/bin/python

class A(object):
def aaa(self):
print "aaa"

def __init__(self):
    print "A"

class B(object):
def bbb(self):
print "bbb"

def __init__(self):
    print "B"

class C(A, B): # 这里继承了 A 的 init 方法(谁在前面就先继承谁的)
pass

cn = C()

[root@localhost ~]# python 1.py # 执行结果可知只执行了第一个父类的init方法
A

如下,通过对类实例化之后,打印出来的是一个对象:
[root@localhost ~]# cat 1.py
#!/usr/bin/env python

class People(object):
pass

ren = People()
print ren

[root@localhost ~]# python 1.py
<main.People object at 0x7fbb9dc>

我们可以通过 str 来返回我们想要的字符串:
[root@localhost ~]# cat 1.py
#!/usr/bin/env python

class People(object):
pass

def __str__(self):
    return "This is a people"

ren = People()
print ren

结果:
[root@localhost ~]# python 1.py
This is a people

init 用于类的初始化,也就是说,当实例化一个对象时,自动执行 init 下面的属性和方法:
#!/usr/bin/env python

class People(object):
color = ‘yellow‘

def __init__(self):
    self.color = ‘black‘

ren = People() # 这里实例化一个对象,那么就会执行init下的内容,则 color 的值变为 black
print ren.color # 当对象去调用的时候,color 值为 black
print People.color # 当类去调用的时候,color 值不变,还是 yellow

[root@localhost ~]# python 1.py
black
yellow

del 用于释放对象所占用的资源,注意 del 是在脚本要退出之前执行的
复制代码
#!/usr/bin/env python

class People(object):
color = ‘yellow‘

def __init__(self):
    self.fd = open(‘/etc/passwd‘)    # 我打开了一个文件

def __del__(self):
    self.fd.close()                  # 可以在__del__中关掉这个文件

ren = People()

类的继承、类的属性总结、类的方法总结

标签:python 1   重用   passwd   ret   pytho   释放   red   字符   多重继承   

原文地址:http://blog.51cto.com/jacksoner/2060034

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!