一、abstractmethod

  • 子类必须全部实现重写父类的abstractmethod方法
  • 非abstractmethod方法可以不实现重写
  • 带abstractmethod方法的类不能实例化
  from abc import abstractmethod, ABCMeta

1 class BettingStrategy(metaclass=ABCMeta):
2
3 @abstractmethod
4 def bet(self):
5 print('0')
6
7 def record_win(self):
8 print('win')
9
10 def record_loss(self):
11 print('loss')
12
13
14 class Bet(BettingStrategy):
15 def bet(self):
16 print('1')

扩展:abc模块

二、staticmethod:静态函数

对象不用实例化即可调用的函数

 1 class Hand4:
2 def __init__(self, dealer_card, *cards):
3 self.dealer_card = dealer_card
4 self.cards = cards
5
6 @staticmethod
7 def freeze(other):
8 hand = Hand4(other.dealer_card, *other.cards)
9 return hand
10
11 @staticmethod
12 def split(other, card0, card1):
13 hand0 = Hand4(other.dealer_card, other.cards[0], card0)
14 hand1 = Hand4(other.dealer_card, other.cards[1], card1)
15 return hand0, hand1
16
17 def __str__(self):
18 return ','.join(map(str, self.cards))
1 h41 = Hand4(deck3.pop(), deck3.pop(), deck3.pop())
2 s1, s2 = Hand4.split(h41, deck3.pop(), deck3.pop())
3 s3 = Hand4.freeze(h41)

调用

Python面向对象编程——一些类定义(杂)的更多相关文章

  1. Python面向对象编程、类

    一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一 ...

  2. Python - 面向对象编程 - 新式类和旧式类

    object object 是 Python 为所有对象提供的父类,默认提供一些内置的属性.方法:可以使用 dir 方法查看 新式类 以 object 为父类的类,推荐使用 在 Python 3.x ...

  3. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  4. python 面向对象编程(一)

    一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class c ...

  5. python面向对象编程进阶

    python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...

  6. Python面向对象编程(下)

    本文主要通过几个实例介绍Python面向对象编程中的封装.继承.多态三大特性. 封装性 我们还是继续来看下上文中的例子,使用Student类创建一个对象,并修改对象的属性.代码如下: #-*- cod ...

  7. Python 面向对象编程——访问限制

    <无访问限制的对象> 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑.但是,从前面Student类的定义来看(见:Py ...

  8. Python 面向对象编程基础

    Python 面向对象编程基础 虽然Pthon是解释性语言,但是Pthon可以进行面向对象开发,小到 脚本程序,大到3D游戏,Python都可以做到. 一类: 语法: class 类名: 类属性,方法 ...

  9. Python面向对象编程——继承与派生

    Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...

  10. 图解python | 面向对象编程

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/56 本文地址:http://www.showmeai.tech/article-det ...

随机推荐

  1. ssr 学习总结

    自己构建ssr 前提:了解  koa, koa-router, koa-static, webpack 文件结构 ssr  中的router store 都是  一个工厂函数 在服务器端渲染(SSR) ...

  2. Win10系统桌面exe文件图标消失不见了的解决方法

    使用 Windows10正式版系统 过程中,发现桌面上的一些exe文件图标突然消失不见了.虽然这些exe程序还能够正常运行,可是感觉还是非常不舒服.这该怎么办呢?接下来,就随小编看看Windows10 ...

  3. python经典例题

    [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? num_list=[] cou=0 for i in range(1,5): for j in rang ...

  4. reduced form(简化式)和structural form(结构式)

    在复习软件构造的时候,我发现了这样一道练习题 例题要求我们对照给出的RI和AF画出相应的映射图.在这里产生了一个疑问,什么是reduced form?是分子小于分母的意思吗? 但是根据给出的答案,并不 ...

  5. C# 窗口全屏、置顶、获取焦点

    很简单的几行代码 this.FormBorderStyle = FormBorderStyle.None; //设置窗体为无边框样式 this.WindowState = FormWindowStat ...

  6. administrator 启用

    net user administrator /active:yes

  7. Win10桌面点鼠标右键一直转圈的解决方法

    win10桌面右键菜单就一直转圈,无法调出桌面右键菜单,下面给大家分享一下怎么解决的问题,一起了解一下!            步骤阅读   工具/原料   win10 企业版 HT1902 方法/步 ...

  8. redis 缓存穿透和缓存击穿,缓存雪崩的原因及解决方案

    缓存穿透 缓存穿透是指查询缓存中没有,数据库中也没有的数据 .从系统层面来看,请求像是穿透了缓存,直接访问数据库.这种情况会给系统带来潜在的风险,如果有大量的请求访问系统数据库中不存在的数据,会直接请 ...

  9. echarts 之 source and clone函数问题hasOwnProperty is not defined

    图表渲染时报错如下: echarts 实例的 setOption 方法用来加载/更新图表数据,setOption 方法内部首先使用了 zrender 的 clone 函数对 options 进行了拷贝 ...

  10. regex cheat sheet

    regex pattern visualizer : regex101: build, test, and debug regex https://regex101.com/ regex regex ...