美文网首页
类的继承

类的继承

作者: 丫丫姑娘_b55e | 来源:发表于2018-06-30 16:03 被阅读0次

继承:继承就是让子类去拥有父类的属性和方法
子类:继承者
父类(超类):被继承者

  • 什么时候用继承:在写一个类的时候,发现这个类中的部分属性和方法另一个类都拥有,
    这个时候就不用去声明这些属性和方法,直接从另外一个类中继承下来就可以

class Person:
"""人"""
def _ init _(self, name='aaa', age=0):
self.name = name
self.age = age
class Student(Person):
pass
stu1 = Student()
print(stu1.name)

实例二:可以继承哪些东西?

1.公开属性可以继承
2.私有的属性不可以继承
3.公开的对象方法可以继承(私有的不行)
4.类字段可以继承
5.类的方法和静态方法可以

总结:属性和方法除了私有的都可以继承; _ slots _不能继承的

类的继承重写

声明一个类,如果不声明其父类,那么这个类默认继承自object这个类。
object类是python中所有类直接或者间接的父类

  • 重新实现从父类继承下来的方法 ---> 重写

class Aniaml(object):

def _ _init_ _(self, name):
    self.name = name

def shout(self):
    print('%s:嗷嗷叫' % (self.name))

def be_beat(self):
    print(self.name,'在跑')
    print('跑的时候嗷嗷叫')

class Dog(Aniaml):

# 重写父类的shout方法。然后通过Dog对象调用shout执行的是子类的方法
def shout(self):
    print('%s:汪汪汪!'% (self.name))

# 重写父类的be_beat,保留了父类实现的功能,并且添加了新的功能
def be_beat(self):
    # super()指的就是父类对象
    super().be_beat()
print('奋起反抗')dog1 = Dog('大黄')
dog1.shout()
dog1.be_beat()

示例2:init方法的继承和重写

  class Person:
"""人"""
def __init__(self, name='', age=0):
    self.name = name
    self.age = age

  class Student(Person):
"""学生类"""
"""
重写init方法要注意:
1.如果需要继承父类的对象属性,就需要通过super()._ _init_ _()
去保留父类的对象属性。然后再添加新的属性
"""
def _ _init_ _(self, name='', age=0, study_id=''):
    super()._ _init__(name, age)
    self.study_id =  study_id

设计两个类:
一个正方形类,拥有方法:求面积、求周长 拥有的属性是边长
一个长方形类,拥有方法:求面积、求周长 拥有的属性是长和宽
提示:正方形就是特殊的长方形

  class Rect:
def _ _init_ _(self, length=0, width=0):
    self.length = length
    self.width = width

def area(self):
    return self.width * self.length

def perimeter(self):
    return (self.width + self.length)*2
  #写一个正方形类继承了长方形(Rect)的属性                       
  #通过添加假的私有属性_ side 使得长与宽相等  
 class Square(Rect):
def  _ _init_ _(self, length=0, width=0, side=0):
    super()._ _init_ _(length, width)
    self.side = side

@property
def side(self):
    return self._side

@side.setter
def side(self, side):
    self.width = side
    self.length = side
    self._side = side

 s1 = Square()
s1.side = 10
print(s1.area())
print(s1.perimeter())

相关文章

  • 一阶段day16-01面向对象

    Python中类支持继承,并且支持多继承 一、继承 1、什么是继承 父类(超类):被继承的类子类:继承父类的类继承...

  • 2018-10-19面向对象和pygame

    类的继承 python中的类支持继承,并且支持多继承 1.什么是继承 父类(超类):被继承的类子类:继承的类继承就...

  • python零基础13:类的继承和定制

    类的定制和继承是什么? 类的继承 类的定制 类的继承要怎么写? 继承基础语法 继承之多层继承 继承的多重继承 类的...

  • Day16总结:面向对象和pygame

    类的继承 python中类支持继承,并且支持多继承 1.什么是继承 父类(超类):被继承的类子类:去继承父类的类继...

  • python 面向对象和pygame

    一、类的继承 python中类支持继承,并且支持多继承 1.什么是继承父类(超类):被继承的类子类:去继承父类的类...

  • day16

    类的继承 python中的类支持继承,并且支持多继承() 1.什么是继承 父类(超类):被继承的类子类:去继承的类...

  • 10.19 day16面向对象和pygame

    1.类的继承python中类 支持继承,并且支持多继承()1.什么是继承父类(超类):被继承的类 子类:继承的类,...

  • 2018-10-19继承、重写、内存管理和认识pygame

    一、类的继承 Python中类支持继承,并且支持多继承 1、什么是继承 父类(超类):被继承的类子类:去继承父类的...

  • day16

    一、类的继承python中类支持继承,并且支持多继承 1.什么是继承父类(超类):被继承的类子类:去继承父类的类继...

  • Day16-面向对象和pygame

    一、类的继承 python中类支持继承,并且支持多继承 1.什么是继承 父类(超类):被继承的类 子类:去继承父类...

网友评论

      本文标题:类的继承

      本文链接:https://www.haomeiwen.com/subject/cswtuftx.html