码迷,mamicode.com
首页 > 编程语言 > 详细

python 中面向对象编程简单总结2

时间:2015-06-24 14:37:21      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

1.python中继承的特点:

  (1)总是从一个类继承,默认为object类

  (2)不要忘记调用super.__init__方法来初始化父类的方法

def __init__(self,args):
    super(Subclass,self).__init__(args)
    pass

  简单例子

class Person(object):
    def __init__(self,name,gender):
        self.name = name
        self.gender = gender
class Student(Person):
    def __init__(self,name,gender,score):
        #super(Student,self)方法调用返回当前类继承的父类
        #如果没有下面的调用,那么Student类中就没有name和gender属性
        super(Student,self).__init__(name,gender)
        self.score = score
s = Student("roger","male",99)
print s.name,s.gender,s.score

2. 使用isinstance(obj,class)来判断obj是否是class类的一个实例

3.继承和多态需要注意的地方

  (1)python是动态语言,动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

  (2)如果实例中没有相应的方法和属性,那么它会顺着继承链向上寻找。如果是方法,它就会调用最近的方法;如果是属性,就会在实例上绑定一个属性。

  (3)多态概念一致,任何能引用父类的地方,一定能使用子类

4.定义类对象之后获取相关属性

  (1)type(obj) 返回变量类型

  (2) dir(obj) 返回变量所有属性

  (3)getattr(obj,attrname) 获取属性: attrname

  (4)setattr(obj,attrname,attrvalue): 设置新的属性

  (5)Python 中的变长参数:*args(只含值), **kwargs(包含键值对),注意到两者调用上是有区别的。

#coding=utf8
__author__ = Administrator
# 当函数的参数不确定时,可以使用*args和**kwargs。*args没有key值,**kwargs有key值
def fun_var_args(farg, *args):
    print args:, farg
    for value in args:
        print another arg:,value
fun_var_args(1, two, 3, None)
class Person(object):
    def __init__(self, name, gender, **kw):
        self.name = name
        self.gender = gender
        for k, v in kw.iteritems():
            setattr(self, k, v)
p = Person(Bob, Male, age=18, course=Python)
print p.age
print p.course

 

python 中面向对象编程简单总结2

标签:

原文地址:http://www.cnblogs.com/roger9567/p/4597462.html

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