1.python继承父类,子类可以调用父类的方法,也可以调用自己的方法。
class Person(object): # 定义一个父类
def talk(self): # 父类中的方法
print("person is talking....")
class Chinese(Person): # 定义一个子类, 继承Person类
def walk(self): # 在子类中定义其自身的方法
print('is walking...')
c = Chinese()
c.talk() # 调用继承的Person类的方法
c.walk() # 调用本身的方法
2.构造函数的继承,也就是在父类需要实际参数时,子类对父类继承,需要继承父类的__init__-----构造方法先,方式主要有两种:
·经典类的写法: 父类名称.__init__(self,参数1,参数2,...)
·新式类的写法:super(子类,self).__init__(参数1,参数2,....)
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
self.weight = 'weight'
def talk(self):
print("person is talking....")
class Chinese(Person):
def __init__(self, name, age, language): # 先继承,在重构
Person.__init__(self, name, age) #继承父类的构造方法,也可以写成:super(Chinese,self).__init__(name,age)
self.language = language # 定义类的本身属性
def walk(self):
print('is walking...')
class American(Person):
pass
if __name__ == "__main__":
c = Chinese('bigberg', 22, 'Chinese')
c.walk()
c.talk()
需要注意:要先继承才能调用相关的属性,要继承类必须继承父类的构造方法。同样,因为继承使用方法重写的属性,所以可以
重写子类的构造方法。如果是父类构造方法中只有私有属性,子类不需要继承也无法继承,但是可以通过函数调用来使用父类的属性。
3.类中的静态变量
class Person(object): # 定义一个父类
name = 123
def talk(self,age): # 父类中的方法
print("person is talking....")
self.age = age
print self.name
print age
def work(self):
print self.age
class Chinese(Person): # 定义一个子类, 继承Person类
def walk(self): # 在子类中定义其自身的方法
print('is walking...')
class Student:
p = Person
name = p.name #其实这相当于给Student创建了一个name的属性,不过他是从Person类中实例出来的
def talk(self):
print self.name
c = Chinese()
c.talk(2) # 调用继承的Person类的方法
c.walk()
c.work()
s = Student()
s.talk()
注意:其中的name实际上相当于Person类的属性,可以在该类中调用,前面需要跟self参数,如果不是继承的类,可以在那个类中先创建Person的类实例,然后当成自己的属性,在方法中调用。