打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python 定义类和属性

类定义

动物是自然界一个庞大的群体,下面演示使用OOP建模动物类。

使用Python语言创建动物类的基本语法如下,使用class关键字定义一个动物类:

class Animal():
    pass

类里面可包括数据,如下所示的Animal类包括两个数据:self.nameself.speed

class Animal():
   def __init__(self,name,speed):
       self.name = name # 动物名字
       self.speed = speed # 动物行走或飞行速度

注意到类里面通过系统函数__init__为类的2个数据赋值,数据前使用self保留字。

self的作用是指名这两个数据是实例上的,而非类上的。

同时注意到__init__方法的第一个参数也带有self,所以也表明此方法是实例上的方法。

属性

类里的namespeed为数据,其实它们有一个专业名称:属性。

如下,添加一个cprop属性,它前面没有self保留字:

class Animal():
   cprop = '我是类上的属性cprop'
   
   def __init__(self,name,speed):
       self.name = name # 动物名字
       self.speed = speed # 动物行走或飞行速度
  
   def __str__(self):
        return '''Animal({0.name},{0.speed}) is printed
                name={0.name}
                speed={0.speed}'
''.format(self)

类上的属性直接使用类便可引用:

In [1]: Animal.cprop                                                           
Out[1]: '我是类上的属性cprop'

类上的属性,实例同样可以引用,并且所有的实例都共用此属性值:

In [1]:cat = Animal('加菲猫',8)
In [2]: cat.cprop                                                              
Out[2]: '我是类上的属性cprop'

Python作为一门动态语言,支持属性的动态添加和删除。

如下cat实例原来不存在color属性,但是赋值时不光不会报错,相反会直接将属性添加到cat上:

cat.color = 'grap'

那么,如何验证cat是否有color属性呢?使用内置函数hasattr

In [24]: hasattr(cat,'color'# cat 已经有`color`属性                          
Out[24]: True

但是注意:以上添加属性方法仅仅为cat实例本身添加,而不会为其他实例添加:

In [26]: monkey = Animal('大猩猩',2)                                            
In [27]: hasattr(monkey,'color')                                             
Out[27]: False
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
python面向对象编程——类与继承 初认识
十七、Python __slots__:限制类实例动态添加属性和方法
Python 基础(十一):面向对象
Python学习教程:面向对象学习实力讲解
你需要了解的最重要的Python概念
第10天:Python 类与对象
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服