类的继承

2018-06-30  本文已影响0人  丫丫姑娘_b55e

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

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())
上一篇 下一篇

猜你喜欢

热点阅读