用super( )调用父类的方法
调用父类里面的方法
12345
isinstance 判断类型
issubclass 判断是否为子类
引用父类的方法必须使用super(自己类名称,self)method(*arg,**kw)
子类应当主动调用父类的构造函数:
def __init__(self, name, age, weight, language): super(BackendProgrammer, self).__init__(name, age, weight) self.language = language
判断对象是否从属于一个类的时候可以用isinstance()函数:
isinstance(对象,类)
打印True的该对象就是类实例化过的那个对象
同理用issubclass()可以判断一个类是否是另一个类的子类
继承父类的方法可以用super()方法:
super(子类名,self).方法名(父类该方法定义的属性)
子类可以继承父类的属性,添加属性,覆盖父类的属性,父类不能使用子类 的属性,也能添加,不能覆盖
super(B,self).method(arg):调用父类的方法
正常调用父类方法
super 调用父类方法:
classB(A):
def method(self,arg):
super(B,self).method(arg)
call parent class's method
class inheritance syntax
类的继承另外一种方法
类的继承 super()
#!/usr/bin/env /python #-*- coding: utf-8 -*- class Programer(object): hobby = 'Play Computer' def __init__(self,name,age,weight): self.name = name self._age = age self.__weight = weight @classmethod def get_hobby(cls): return cls.hobby @property def get_weight(self): return self.__weight def self_introduction(self): print 'My name is %s \n I am %s years old\n '%(self.nameB,self._age) class BackendProgramer(Programer): def __init__(self,name,age,language): super(BackendProgramer,self).__init__(name,age,weight) self.language = language if __name__ == '__main__': programer = BackendProgramer('Albert',25,80,'Python') print dir(programer) print programer.__dict__ print type(programer) print isinstance(programer,Programer)
调用父类的方法用super()
继承使得大量代码被复用,是面向对象的优势。
Object类是一切类的父类。
继承的子类会继承父类的属性和方法,也可以自己定义,覆盖父类的属性和方法。
在重写父类时,需要调用父类里的方法-->super()
class A(object): def method(self, arg): pass class B(A): def method(self, arg): super(B, self).method(arg)
子类的类型判断:
isinstance:判断类型
issubclass:判断是否是子类
class Programer(object): hobby = 'Play Computer' def __init__(self, name, age, weight): self.name = name self._age = age self.__weight = weight def self_introduction(self): print 'My name is %s \nI am %s years old\n' % (self.name, self._age) class BackendProgramer(Programer): def __init__(self, name, age, weight, language): super(BackendProgramer, self).__init__(name, age, weight) self.language = language if __name__ == '__main__': programer = BackendProgramer('Albert', 25, 80, 'Python') print dir(programer) print programer.__dict__ print type(programer) #-->属于BackendProgramer print isinstance(programer, Programer) #-->True
类的继承
子类的类型判断
isinstance
issubclass
类的继承
super(B, self).method(arg)
jietu
类的继承:
会继承父类的属性和方法
也可以自己定义,覆盖父类的属性和方法
用super()调用父类的方法:
super(子类名,self).method(arg)