python类的学习 (1)

如何理解类? 

类可作为一个大类的统称,在这个大类之中定义一些该大类包含的子类所共有的属性(如动物类,可包含其子类如猫,狗等的共同属性,如 吃喝拉撒等).

为什么需要类?

当同样的属性需要被反复使用时,类的定义可以很大程度上节省空间及是代码更加简洁(因为相同的属性全都定义在一个类指针了,那么其他的类要使用时就不必再次进行编写,直接从大类中引用即可)

1类的形式: 

 

 调用类时: 具体实例名称=类名()   实例名称.方法() 即可调用该类的方法.

此处的方法就是 eat函数 eat函数执行结果是 "整天吃"故输出是整天吃.类的实例在使用时实际上是使用了类中定义好的方法,定义的方法是什么输出你引用时就是什么输出,若方法中没有输出,则在外部自己添加print()函数输出一般输出 类名 +object at+地址,故有__str__方法.

2 类中的方法 

类中常见的有__init__方法(也被称为魔术方法 以双下划线开头结尾的方法,是python内置的方法)

除此之外也可以自己定义方法(跟定义函数一致)

 __init__中的参数用于自定义输入(通常跟随__str__方法,此方法用于自定义输出格式)

 3类的继承

一个类继承另一个类,A继承B ,A称为子类(派生类),B称为父类(超类),(注:object是最大的超类,可理解为他是最老的祖宗 这里也能解释上面没用str方法的输出会有object)

继承的作用:子类一旦继承父类,就能使用父类中定义的公共方法,同时也能根据需求在父类方法的基础上进行扩展

格式 : clas 子类名(父类名1,父类名2,...):

子类可以继承一个父类,也可继承多个父类,方法一致

子类可以继承父类,也可以继承父类所继承的父类(粗浅理解为 孩子可继承爸爸的,再通过爸爸去继承爷爷的)

多继承中有父类有相同名称的方法怎么办?

a是Aa1的实例,而Aa1又同时继承A1 A2,在调用相同名称方法的时候遵循"先找到谁就用谁"

先在A1中找到就用了A1中的方法.

即先在Aa1中找该方法,找不到再按照__mro__函数显示的顺序进行寻找

(住:不同编译器查找顺序可能不同,有些是 亲爹-亲爷爷-干爹-干爷爷  而有些则是亲爹-干爹-亲爷爷-干爷爷,此处稍作了解即可) 

4 类属性与实例属性

类属性定义:定义在类方法内 (class之内),实例方法之外(def之外)的方法  可以被类对象和实例对象共同访问.

实例属性定义:定义在实例方法之内的属性,只能被实例对象引用  (注:若是用实例对象调用类属性,先在实例方法中找,找不到再去类方法中找,二者均不存在会报错!)

能否通过实例对象对类属性进行修改?  不可!

能否通过类对象对类属性进行修改? 可以!

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值