python类的继承、封装和多态

摘自https://www.cnblogs.com/evablogs/p/6724477.html

继承


1

2

3

4

5

6

7

8

class Person(object):

    def __init__(self, name, gender):

        self.name = name

        self.gender = gender

class Student(Person):

   def __init__(self, name, gender,score):                        #score属性是子类自己的属性

        super(Student,self).__init__(name,gender)                 #super(子类名称,self).__init__(继承父类的属性1,属性2):初始化父类,继承Person父类的name和gender属性

        self.score=score

除了从一个父类继承外,Python允许从多个父类继承,称为多重继承。

多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

#哪类人

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(Student, BasketballMixin):                               #既是学生,又会打篮球的人,即继承学生类,也继承篮球技能类,多重继承

    pass

class FTeacher(Teacher, FootballMixin):

    pass

= BStudent()

print s.skill()

>>> basketball

= FTeacher()

print t.skill()

>>> football

多态


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

class Person(object):

     def __init__(self,name):

          self.name=name

     def a(self):                                               #Person父类的a方法

          return ‘I am a Person,my name is %s‘ %self.name

class Student(Person):

      def __init__(self,name,age):

           super(Student,self).__init__(name)

           self.age=age

      def a(self):                                              #Student子类的a方法

          return ‘I am a Student,my name is %s‘ %self.name   

class Teacher(Person):

      def __init__(self,name,score):

           super(Teacher,self).__init__(name)

           self.score=score

      def a(self):                                              #Teacher子类的a方法

          return ‘I am a Teacher,my name is %s‘ %self.name   

def show_a(x):                                                  #定义一个方法,用于接收x参数,返回每个类实例对象相对应的方法

     print a()

p=Person(‘Bob‘)

s=Student(‘Alice‘,12)

t=Teacher(‘Lily‘,80)

结果:

>>> show_a(p)

I am a Person,my name is Bob

>>> show_a(s)

I am a Student,my name is Alice

>>> show_a(t)

I am a Teacher,my name is Lily

结果返回子类自己的方法,但当子类的方法找不到时会顺着子类找到父类相对应的方法

封装

将细节封装起来提供一个接口被访问,有效地保证了细节的安全。


1

2

3

4

5

6

7

8

9

class Person(object):

      def __init__(self):

           self.__name=‘a‘

     @property                                   #使用@property将一个方法name变成属性,可以直接.name访问

      def name(self):                            #封装self.__name属性

           return self.__name                   

p1=Person()

p1.name                                          #p1.name可以直接访问name方法

原文地址:https://www.cnblogs.com/yuer20180726/p/10790349.html

时间: 2024-11-06 23:06:04

python类的继承、封装和多态的相关文章

python类的继承和多态

python类的继承和多态 现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了.之前学C++的时候就把类.对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象. 就像说的,类有三个特征:封装.继承.多态. 1.封装:类封装了一些方法,可通过一定的规则约定方法进行访问权限. C++中的成员变量有public.private.ptotected. 在python中,默认的成员变量都是public的,如果成员变量前面是加两个下划线,表示该成员变量是私有的

python类的继承

Python 类的一些基本概念 Python中一切皆对象,声明变量函数等的过程实际上就是它们到内存中为对象分配的空间的连接.Python中的类同Java.C++一样,有自己的属性与方法.属于一个对象或类的变量被称为域. 域有两种类型--属于每个实例/类的对象或属于类本身,它们分别被称为实例变量和类变量. 类的变量 由一个类的所有对象(实例)共享使用.所有对象共用一个类变量的拷贝.对象的变量 由类的每个对象/实例拥有.因此每个对象有自己对这个域的一份拷贝. 类的方法与普通的函数只有一个特别的区别-

python基础之继承原理,多态与封装

1.什么是继承? 继承是一种创建新的类的方式.class A: passclass B: pass2.如何继承---->如何寻找继承关系 现实生活中找继承关系是自下而上,在程序中写是自上而下继承是一种"是"的关系:人类.猪类.狗类都是继承动物类,因为他们都是动物 3.为什么要用继承?解决代码重用问题?解决的是:什么是什么的问题-->继承 4.派生:子类继承了父类的属性,然后衍生(或派生)出自己新的属性 如果子类衍生出的新的属性与父类的某个属性名字相同 那么再调用子类的这个属

Inheritance Of Python 类的继承

Inheritance OOP三要素之一,继承 人类和猫都继承自动物类. 个体继承自父母,集成了父母的一部分特征. 在面向对象的世界中,从父类继承,就可以直接拥有弗雷德属性和方法,这样可以减少代码,多复用.子类可以定义自己的属性和方法. 类的继承 对于python来讲,所有的祖先都是object,所有的类都继承自object class Animal: def __init__(self, name): self._name = name @property def name(self): re

python 类定义 继承

1 定义一个时间类,带默认参数 class mytime(object): def __init__(self,hour=21, minute=13, second=50): self.hour = hour self.minute = minute self.second = second def __str__(self): return '__str__ hour:minute:second = %02d:%02d:%02d' %(self.hour,self.minute,self.se

python 类 六:继承自动寻找父类

本系列博客(python 类) 的部分例子来自于 <<python 核心编程 第二版>> 前面我们谈到 python 继承,是可以引用父类的__init__方法的 ,并在此基础上添加子类自己的特殊的属性的设定,形成子类自己的__init__  构造函数. 在这种方法中,必须显示的指出父类的名字. #coding:utf-8 class p(object):     def __init__(self,nm):         self.name  = nm class c(p):

Python类的继承和方法重写总结

我们都知道类可以继承,通过继承可以实现代码的复用,使代码看起来更加简洁 比如: Class B(A): Pass 定义了一个名为B的类,它继承于A,我们把B叫做A的子类,A叫做B的超类(父类). 方法重写 当子类定义了一个和超类相同名字的方法时,那么子类的这个方法将覆盖超类相同的方法(或称为重写) 先借用两个例子: >>> class Bird: ...     def __init__(self): ...         self.hungry = True ...     def 

python类的继承和重写

构造方法: def __init__(self) 路径: e:/pythonpro/liuyun/class02.py #——————类的构造方法——————- class person(): name ="张翰" sex = "男" #构造方法,固定的写法:初始化类 def __init__(self,xb): self.sex = xb self.test() def test(self): print("这是test方法") d = per

[Objective-C] 004_继承封装与多态

继承 面向对象编程 (OOP) 语言的一个主要功能就是"继承".继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展.通过继承创建的新类称为"子类"或"派生类",被继承的类称为"基类"."父类"或"超类".继承的过程,就是从一般到特殊的过程.在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是"属于"关系.例如