python继承:(1)总是从某个类继承
(2)要用父类super方法进行初始化。
继承一个类 :Teacher继承自Person类 正确调用父类的__init__方法
class Person(object):
def __init__(self, name, gender):
self.name = name
self.gender = gender
class Teacher(Person):
def __init__(self, name, gender, course):
super(Teacher,self).__init__(name,gender)
self.course=course
t = Teacher('Alice', 'Female', 'English')
print t.name
print t.course
判断 实例类型:isinstance(instance,class)
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).__init__(name, gender)
self.score = score
class Teacher(Person):
def __init__(self, name, gender, course):
super(Teacher, self).__init__(name, gender)
self.course = course
t = Teacher('Alice', 'Female', 'English')
print isinstance(t,Person)
print isinstance(t,Student)
print isinstance(t,Teacher)
print isinstance(t,object)
多态:这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。
import json
class Students(object):
def read(self):
return r'["Tim","Bob","Alice"]'
s = Students()
print json.load(s)
多重继承:python支持多重继承,一个类可以有多个父类
class Person(object):
pass
class Student(Person):
pass
class Teacher(Person):
pass
class SkillMixin(object):
pass
class BasketballMixin(SkillMixin):
def skill(self):
return 'basketball'
class FootballMixin(SkillMixin):
def skill(self):
return 'football'
class BStudent(BasketballMixin,Student):
pass
class FTeacher(FootballMixin,Teacher):
pass
s = BStudent()
print s.skill()
t = FTeacher()
print t.skill()
获取对象信息:
isinstance(instance,class)
type(instance)获得对象类型
dir(instance)获得instance所有属性
getattr(instance,attr)获得instance指定属性值
setattr(instance,k,v)给instance绑定属性k 值为v