python类继承和组合

在python3中所有类默认继承object,凡是继承了object的类都成为新式类,以及该子类的子类Python3中所有的类都是新式类,没有集成object类的子类成为经典类(在Python2中没有集成object的类以及它的子类都是经典类

继承式用来创建新的类的一种方式,好处是减少重复代码

class People:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def walking(self):
        print(‘%s is walking ‘ %self.name)
    def talking(self):
        print(‘%s is talking ‘%self.name)

class Teacher(People):
    pass
class Student(People):
    pass

t1=Teacher(‘egon‘,18)
print(t1.name,t1.age)
t1.walking()
t1.talking()
s1=Student(‘xiaobai‘,22)
print(s1.name,s1.age)
s1.talking()
s1.walking()
执行结果
egon 18
egon is walking
egon is talking
xiaobai 22
xiaobai is talking
xiaobai is walking 
class People:
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex
    def walking(self):
        print(‘%s is walking ‘ %self.name)
    def talking(self):
        print(‘%s is talking ‘%self.name)

class Teacher(People):
    def __init__(self,name,age,sex,level,salary):
        People.__init__(name,age,sex)
        self.level=level
        self.salary=salary
    def teaching(self):
        People.talking(self)
        print(‘%s is teaching‘%self.name)
class Student(People):
    def __init__(self,name,age,sex,group):
        People.__init__(name,age,sex)
        self.group=group
    def studying(self):
        People.talking(self)
        print(‘%s is studying‘%self.name)

组合

class Date:
    def __init__(self,year,mon,day):
        self.year=year
        self.mon=mon
        self.day=day
    def tell_birth(self):
        print(‘出生于<%s>年 <%s>月 <%s>日‘%(self.year,self.mon,self.day))

class Teacher:
    def __init__(self,name,age,sex,year,month,day):
        self.name=name
        self.age=age
        self.sex=sex
        self.birth=Date(year,month,day)
    def teaching(self):
        print(‘%s is teaching‘%self.name)
class Student:
    def __init__(self,name,age,sex,year,mon,day):
        self.name=name
        self.age=age
        self.sex=sex
        self.birth=Date(year,mon,day)
    def studying(self):
        print(‘%s is studying‘%self.name)

xiaobai=Student(‘xiaobai‘,22,‘male‘,‘1995‘,‘3‘,‘16‘)
xiaobai.birth.tell_birth()
执行结果
出生于<1995>年 <3>月 <16>日

继承和组合

class People:
    def __init__(self,name,age,sex,year,mon,day):
        self.name=name
        self.age=age
        self.sex=sex
        self.birth=Date(year,mon,day)
    def walking(self):
        print(‘%s is walking ‘ %self.name)
    def talking(self):
        print(‘%s is talking ‘%self.name)

class Date:
    def __init__(self,year,mon,day):
        self.year=year
        self.mon=mon
        self.day=day
    def tell_birth(self):
        print(‘出生于<%s>年 <%s>月 <%s>日‘%(self.year,self.mon,self.day))

class Teacher(People):
    def __init__(self,name,age,sex,level,salary,year,mon,day):
        People.__init__(self,name,age,sex,year,mon,day)
        self.level=level
        self.salary=salary
    def teaching(self):
        People.talking(self)
        print(‘%s is teaching‘%self.name)
class Student(People):
    def __init__(self,name,age,sex,year,mon,day,group):
        People.__init__(self,name,age,sex,year,mon,day)
        self.group=group
    def studying(self):
        People.talking(self)
        print(‘%s is studying‘%self.name)

父类要限制
1、子类必须有父类的方法
2、子类实现的方法必须跟父类的方法的名字一样

import abc

class File(metaclass=abc.ABCMeta):
    @abc.abstractclassmethod
    def read(self):
        pass
    @abc.abstractclassmethod
    def write(self):
        pass
时间: 2024-10-31 14:22:02

python类继承和组合的相关文章

Python 类继承,__bases__, __mro__, super

Python是面向对象的编程语言,也支持类继承. >>> class Base: ... pass ... >>> class Derived(Base): ... pass 这样就定义了两个类,Derived继承了Base.issubclass(a,b)能够測试继承关系: >>> issubclass(Derived, Base) True 在Python中,每一个类有一个__bases__属性,列出其基类 >>> Derived.

Python全栈开发——类继承和组合

# 类组合将几个不相关的类组合在一起#什么时候用:当类之间有显著的不同,并且较小的类是较大的类所需组件时,用组合 class School: def __init__(self,name,addr): self.name=name self.addr=addr def zhao_sheng(self): print('%s is ' %self.name) class Course: def __init__(self,name,price,period,school): self.name=n

python 类继承

[转]http://www.cnblogs.com/mmix2009/p/3538663.html 1 #!/usr/bin/python 2 # Filename: inherit.py 3 4 class SchoolMember: 5 '''Represents any school member.''' 6 def __init__(self, name, age): 7 self.name = name 8 self.age = age 9 print'(Initialized Sch

python多继承

http://blog.csdn.net/pipisorry/article/details/46381341 There are two typical use cases forsuper: In a class hierarchy withsingle inheritance, super can be used to refer to parent classes withoutnaming them explicitly, thus making the code more maint

python类与对象的组合与继承

1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于"有一个"的场景中,继承用于"是一个"的场景中.例如,水池里有一个乌龟,天上有一个鸟,地上有一个小甲鱼,这些适合使用组合.青瓜是瓜,女人是人,鲨鱼是鱼,这些就应该使用继承啦实例如下: class Turtle: def __init__(self,x): self.num = x class Fish: def

python 类组合

在使用一款云产品的python sdk过程中,发现了python类之间调用的另一种少见方法:类组合,那么类组合是用来干吗的呢? 我们知道,在python中,类之间的相互调用,我们习惯性的采用继承的方法,但是 除了继承方法,我们还可以采用类组合的方式来调用另一个类 官方的说法:让不同的类混合并加入到其他类中,来增强功能和代码重用性.你可以在一个大点的类中创建你自己的类的实例,实现一些其他属性和方法来增强原来的类对象. 举个例子: >>> class Name(object):       

2015/9/22 Python基础(18):组合、派生和继承

一个类被定义后,目标就是把它当成一个模块来使用,并把这些对象嵌入到你的代码中去,同其他数据类型及逻辑执行流混合使用.有两种方法可以在你的代码中利用类.第一种是组合,就是让不同的类混合并加入到其他类中,来增强功能和代码重用性.你可以在一个大点的类中创建你自己的类的实例,实现一些其他属性和方法来增强原来的类对象.另一种是派生,通过子类从基类继承核心属性,不断地派生扩展功能实现. 组合举例来说,我们想对之前做过的地址本类作加强性设计.如果在设计的过程中,为names.addresses等创建了单独的类

Python基础----继承派生、组合、接口和抽象类

类的继承与派生 经典类和新式类 在python3中,所有类默认继承object,但凡是继承了object类的子类,以及该子类的子类,都称为新式类(在python3中所有的类都是新式类) 没有继承object类的子类成为经典类(在python2中,没有继承object的类,以及它的子类,都是经典类) 1 class People: 2 pass 3 class Animal: 4 pass 5 class Student(People,Animal): #People.Animal称为基类或父类,

Inheritance Of Python 类的继承

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