python继承关系及DVD案例

1.模块.getrefcount--查看引用个数,如果没有引用,则抛异常;

2.继承:简化代码。生成子类时,先初始化父类

继承属性--①self.属性=当前属性

     ②父类.属性=当前属性

     ③父类._init_()方法

     ④super(子类,self)._init_()方法

3.构造方法(必须有返回值)优先于初始化方法

类名.mso用于调用父类的位置

def _new_(cls,*,**):

  print()

  return object._new_(cls)

4.类方法:@classmethod需要参数 例如构造方法

静态方法:@staticmethod没有参数 和类.对象没有关系

5.单例模式:只创建一个对象

构造方法内部可以进行判断

#单例模式

class Sing:

__instance=None

  def __new__(cls):

    if cls.__instance==None:

      cls.__instance=object.__new__(cls)

      return cls.__instance

    else:

      return cls.__instance

s=Sing()

ss=Sing()

print(id(s),id(ss))

6.对象列表排序:

重写_lt_() _str_() 等方法;列表输出需要循环

def _lt_(self,other):

  return self.brand.encode("gbk")<other.brand.encode("gbk")

der _str_(self):

  return self.brand+str(self.price)

7.异常处理和写

try:

  语句

except 异常类型 as 别名:

  语句

else:

  无异常则执行

finally:

  语句

8.运用else,一般和break一起使用

flag=False

for i in range(1,11):

  if i%3==0:

    flag=True

    print(i)

    break

  else:

    print("没有被整除的")

9.pass什么都不写的时候用

迭代器 装饰模式 xml解析 文件

DVD管理系统案例:(分为简单模拟和优化)

  1.简单模拟(含错误)

class Dvd:    def __init__(self,num=None):        self.num=num        list=[]        print("========DVD管理系统========\n1.查询所有DVD\n2.增加DVD\n3.借出DVD\n4.归还DVD\n5.退出")

class Handler(Dvd):    def __init__(self):        Dvd.__init__(self)        num = int(input("请输入您要选择的数字"))        list=[]        if num is 1:            print(list)            Handler()        if num is 2:            value=input("请输入DVD的名称")            list.append(value)            print(list)            nu=int(input("是否继续增加0/1"))            if nu is 0:                value = input("请输入DVD的名称")                list.append(value)            print(list)            Handler()

if num is 3:            value=input("请输入您要借出的DVD")            list.remove(value)            print(list)            Handler()        if num is 4:            value=input("请输入要归还的DVD名称")            list.append(value)            print(list)            Handler()        else:            print("已经退出系统!")            nu=str(input("是否再次进入系统0/1"))            if nu is 0:                Handler()            else:                pass

s=Handler()

2.优化后案例(还可以继续优化,目前要求不清晰,能力有限):

class Dvd:    def __init__(self,num=None):        self.num=num        list=[]        print("========DVD管理系统========\n1.查询所有DVD\n2.增加DVD\n3.借出DVD\n4.归还DVD\n5.退出")

class Handler(Dvd):    def __init__(self):        Dvd.__init__(self)        num = int(input("请输入您要选择的数字"))        list=[]        if num is 1:            print(list)            Handler()        if num is 2:            value=input("请输入DVD的名称")            list.append(value)            print(list)            nu=int(input("是否继续增加0/1"))            if nu is 0:                value = input("请输入DVD的名称")                list.append(value)            print(list)            Handler()

if num is 3:            value=input("请输入您要借出的DVD")            list.remove(value)            print(list)            Handler()        if num is 4:            value=input("请输入要归还的DVD名称")            list.append(value)            print(list)            Handler()        else:            print("已经退出系统!")            nu=str(input("是否再次进入系统0/1"))            if nu is 0:                Handler()            else:                pass

s=Handler()

原文地址:https://www.cnblogs.com/qianshuixianyu/p/9118515.html

时间: 2024-10-11 06:11:15

python继承关系及DVD案例的相关文章

Python中类的内置方法与继承关系实例

1.类的内置方法 Python内部类:所谓内部类,就是在类的内部定义的类,主要目的是为了更好的抽象现实世界.例子:汽车是一个类,汽车的底盘轮胎也可以抽象为类,将其定义到汽车内中,而形成内部类,更好的描述汽车类,因为底盘轮胎是汽车的一部分. 内部类实例化方法: 方法1:直接使用外部类调用内部类方法2:先对外部类进行实例化,然后再实例化内部类 out_name = outclass_name() in_name = out_name.inclass_name() in_name.method() #

python 异常继承关系及自定义异常的实现

主要介绍 python 中异常的继承关系,及如何自定义异常 1. 异常的继承关系 BaseException # 所有异常的基类 +-- SystemExit # 解释器请求退出 +-- KeyboardInterrupt 用户中断执行(通常是输入^C) +-- GeneratorExit # 生成器(generator)发生异常来通知退出 +-- Exception # 常规异常的基类 +-- StopIteration # 迭代器没有更多的值 +-- StandardError # 标准错误

【python】继承关系和isinstance

来源:廖雪峰 继承关系是: object -> Animal -> Dog -> Husky 那么,isinstance()就可以告诉我们,一个对象是否是某种类型.先创建3种类型的对象: >>> a = Animal() >>> d = Dog() >>> h = Husky() 然后,判断: >>> isinstance(h, Husky) True >>> isinstance(h, Dog)

Python rest-framework 中类的继承关系(as_view)

一. 背景 最近几天一直在学习restful framework的源代码,用户请求的流程,在路由系统这块遇到一个疑问,关于类的继承关系,当请求进来到路由这块,执行as_view()方法的时候,为什么会运行父类View的as_view()方法再执行到APIView的dispatch方法呢?这里记录一下一遍后面方便自己查阅 二. 代码示例 1. 路由 from django.conf.urls import url from api import views as api_view urlpatte

python 继承和多态

在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Super class). 比如,我们已经编写了一个名为Animal的class,有一个run()方法可以直接打印: class Animal(object): def run(self): print 'Animal is running...' 当我们需要编写Dog和Cat类时,就可以直接从Animal

python继承

Python继承 继承实例: 父类和子类的关系: 继承树: 没有父类就继承object类,不要忘记调用super().__init__来初始化父类 代码: class Person(object): def __init__(self, name, gender): self.name = name; self.gender = gender; class Student(Person): def __init__(self, name, gender ,score): super(Studen

由socketserver源码引出的类的继承关系

当我们拿到一份python源代码,我们要怎么去看呢? 下面我们以socketserver为例,看下面的一段代码: 1 #!/usr/bin/env python 2 # -*- coding: UTF-8 -*- 3 # Author: ZCX 4 5 import socketserver #导入socketserver模块 6 7 8 class MyServer(socketserver.BaseRequestHandler): #定义一个类 9 def handle(self): #定义

python继承,判断类型,多态

1.python中继承 如果已经定义了Person类,需要定义新的Student和Teacher类时,可以直接从Person类继承: class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender 定义Student类时,只需要把额外的属性加上,例如score: class Student(Person): def __init__(self, name, gender,

深入Django ORM的继承关系

ORM中通常将对象引用映射到外键,但是对于继承,关系数据库中没有自然有效的方法来对应.从数据存储的角度来看,在映射继承关系时,可以采用几种方式(参考JPA中的InheritanceType.定义): 使用单个表,在JPA中称作SINGLE_TABLE.整个继承树共用一张表.使用唯一的表,包含所有基类和子类的字段. 每个具体类一张表,在JPA中称作TABLE_PER_CLASS.这种方式下,每张表都包含具体类和继承树上所有父类的字段.因为多个表中有重复字段,从整个继承树上来说,字段是冗余的. 每个