面向对象

多继承

所谓多继承,即子类有多个父类,并且具有它们的特征

代码为先定义一个父类

classA:

defprintA(self):

print('----A----')

再定义一个父类(-.-!)

classB:

defprintB(self):

print('----B----')

定义子类

lassC(A,B):

defprintC(self):

print('----C----')

这里面的子类就可以继承两个父类,并且自己可以添加自己的函数方法

如果子类调用父类方法,而父类被调用的方法重复了,那么就会调用第一个父类的方法

在子类中父类方法里面的方法也可以调用,是一级一级向上找的,比方父类方法a里面有个其他类的方法b,子类c如果想调用c,就可以直接在父类里面实现

子类重写覆盖父类

所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法

子类中如果有父类方法,就会直接覆盖父类的方法

如果就只想调用父类的方法,可以在子类虫谷方法的后添加super().__init__(name)格式

多态

Python(鸭子语言)

“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”表明python是弱类型语言,不需要定义类型

所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态

·Python “鸭子类型”

‘’’

python是一种弱类型语言,没有类型限制。

变量的类型永远是通过右侧的值判断的。

方法中的参数,传递任何值都行。但是要考虑方法内部的业务逻辑。

多态:

1、父类作为参数,可以传递父类和子类对象

2、接口作为参数,只能传递实现对象

所以有两种理解:

1、python不支持多态:

python是弱类型,没有类型限定,无法区分父和子,或者说接口和实现类

2、python处处是多态

python是弱类型,没有类型限定,传递任何内容都行

类属性和实例属性

类属性

就是公有的方法里面的属性,没有被self定义

实例属性

就是被定义值的属性,在对象里面被定义self特定值

class People(object):

country = 'china' #类属性

print(People.country)

p = People()

print(p.country)

p.country = 'japan'

print(p.country)      #实例属性会屏蔽掉同名的类属性

print(People.country)

del p.country    #删除实例属性

print(p.country)

在调用类方法时候,对象会自己创建一个环境把类方法的地址复制进去,当你做修改的时候,修改的只是对象里面的函数,不影响类方法

静态方法和类方法

类方法@classmethod方法里面尽量写(cls)

可以通过实例对象和类对象都可以访问方法

class People(object):

country = 'china'

@classmethod

def getCountry(cls):

print(type(cls))

print(cls)

return cls.country

p = People()

p.country=1

print(p.getCountry())

print People.getCountry()

在例子中,不管调用的是类方法还是实例方法都打印的是china

他们的指向都是一样的,都指向__main__.People

类方法可以用来修改类属性

class People(object):

country = 'china'

@classmethod

def getCountry(cls):

return cls.country

@classmethod

def setCountry(cls,country):

cls.country = country

p = People()

print(p.getCountry())

print(People.getCountry())

p.setCountry('japan')

print(p.getCountry())

print(People.getCountry())

Setmethod中的cls是用来修改getCountry中的cls值,而此cls值等同于类属性people里面的country = 'china',所以把country进行了修改

从类方法和实例方法以及静态方法的定义形式就可以看出来,类方法的第一个参数是类对象cls,那么通过cls引用的必定是类对象的属性和方法;而实例方法的第一个参数是实例对象self,那么通过self引用的可能是类属性、也有可能是实例属性(这个需要具体分析),不过在存在相同名称的类属性和实例属性的情况下,实例属性优先级更高。

静态方法

需要通过修饰器@staticmethod来进行修饰,静态方法不需要多定义参数

class People(object):

country = 'china'

__num = 100

@classmethod

def getCountry(cls):

return cls.country

@staticmethod

def myStaticMethod():

print('myStaticMethod...')

print(People.__num)

p = People()

p.country=1

print(p.getCountry())

print(People.getCountry())

print(p.myStaticMethod())

print(People.myStaticMethod())

此方法中p.country=1是在p中添加了一个属性,不改变类属性,而用静态方法调用对象时

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 定义类并创建实例 在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类...
    绩重KF阅读 3,923评论 0 13
  • Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类...
    chen_000阅读 778评论 2 2
  • 1.1面向对象 面向对象(object-oriented ;简称: OO)至今还没有统一的概念 我这里把它定义为:...
    TENG书阅读 560评论 0 0
  • 从8月24日下午去学校,到9月2日你回家,其实不过九天的时间。可对于你来说,已经很长了。27日去给你送饭...
    月光墨墨阅读 443评论 2 2
  • 8月13日在成都地铁扶梯上,一位暖男在后面为一位被背篓压弯了腰的阿姨拎起了背篓,减轻阿姨的负担。新闻发出后,网友都...
    聘婷时光阅读 356评论 0 0