talk

09-04 多态性与鸭子类型

落花浮王杯 提交于 2019-12-20 13:00:17
多态与多态性 多态指的是一类事物有多种形态,比如动物有多种形态:猫、狗、猪 class Animal : #同一类事物:动物 def talk ( self ) : pass class Cat ( Animal ) : #动物的形态之一:猫 def talk ( self ) : print ( '喵喵喵' ) class Dog ( Animal ) : #动物的形态之二:狗 def talk ( self ) : print ( '汪汪汪' ) class Pig ( Animal ) : #动物的形态之三:猪 def talk ( self ) : print ( '哼哼哼' ) #实例化得到三个对象 >> > cat = Cat ( ) >> > dog = Dog ( ) >> > pig = Pig ( ) 多态性指的是可以在不用考虑对象具体类型的情况下而直接使用对象,这就需要在设计时,把对象的使用方法统一成一种:例如cat、dog、pig都是动物,但凡是动物肯定有talk方法,于是我们可以不用考虑它们三者的具体是什么类型的动物,而直接使用 >> > cat . talk ( ) 喵喵喵 >> > dog . talk ( ) 汪汪汪 >> > pig . talk ( ) 哼哼哼 更进一步,我们可以定义一个统一的接口来使用 >> > def Talk (

hdu 6695 Welcome Party 枚举 set

谁都会走 提交于 2019-11-28 19:18:37
把所有人按照sing从大到小排序,然后枚举sing值最高的人i,比他高的必须得去talk,维护必须去talk的这波人的最大值,作为maxn。 然后两个情况,如果maxn>=sing[i],那么i作为sing最高的人情况下,显然talk中的最大值不可能小于maxn,我们再怎么往talk组加人,也只可能会让差距变大,所以把maxn - sing[i]和答案取min。 如果maxn < sing[i],我们就去找i+1到n,这些人中,talk最接近sing[i]的两个人,一个大于等于sing[i],一个小于等于sing[i],用set中lower_bound实现,对于小于情况加入负数即可。注意这两个人必须都得大于maxn,才有意义。然后继续取min。 maxn初值必须得是负无穷,要不然,第一个人的sing可能跟初值为0的maxn取出一个不存在的情况。被这个边界卡了一下午.... 1 #include <cstdio> 2 #include <set> 3 #include <algorithm> 4 using namespace std; 5 typedef long long ll; 6 struct peo 7 { 8 ll sing,talk; 9 friend bool operator < (peo a,peo b) 10 { 11 return a.sing > b

python基础--面向对象之多态

久未见 提交于 2019-11-27 13:54:21
# 多态是指一类事物有多种行态, # 例如:动物有多种形态:人,狗,猫 # 他们有一些共同的特征:吃,喝,拉,撒 # 多态性是指在不考虑实例类型的情况下使用实例 # 对同一事物不同的类,对象有不同的响应, # 例如:放假了,有的同学回家,有的去旅游,有的去兼职 # 有的在敲代码(就是我啦) # 列表,字符串,字典都有len属性,但是是不同的执行过程。 class Animal(): def talk(self): pass class People(Animal): def __init__(self,name): self.name = name def talk(self): print("%s 说人话"%self.name) class Cat(Animal): def __init__(self,name): self.name = name def talk(self): print("%s 说猫话"%self.name) class Dog(Animal): def __init__(self,name): self.name = name def talk(self): print("%s 说狗话"%self.name) peo = People('wang') cat = Cat('cat') dog = Dog('dog') peo.talk() cat.talk