• 400-650-7353

    精品课程

    您所在的位置:首页 > IT干货资料 > python > 【Python基础知识】Python类的类属性、实例方法和类方法

    【Python基础知识】Python类的类属性、实例方法和类方法

    • 发布: python培训
    • 来源:python干货资料
    • 2021-02-09 15:44:34
    • 阅读()
    • 分享
    • 手机端入口

    1、类属性

    类属性与实例属性不同。一个类的所有实例的值都相同的属性称为类属性。所有实例都共享类属性的值。类属性是在类级别定义的,而不是在构造方法__init__()方法内部定义的。与实例属性不同,使用类的名称访问类属性:

    1. >>> class Cat: 
    2. ...     name = 'Mimi' 
    3. ... 

    上述Cat类包括一个名为name的类属性,可以使用类名称访问该属性:

    1. >>> Cat.name 
    2. 'Mimi' 

    Cat类的每个实例都可以使用点表示法访问该属性:

    1. >>> mimi = Cat() 
    2. >>> miaomiao = Cat() 
    3. >>> mimi.name 
    4. 'Mimi' 
    5. >>> miaomiao.name   # mimi和miaomiao的name都为'Mimi' 
    6. 'Mimi' 

    但是,改变某个实例的类属性不会影响其他实例,它只会影响当前实例:

    1. >> class Cat: 
    2. ...     name = 'Mimi' 
    3. ... 
    4. >>> mimi = Cat() 
    5. >>> mimi.name 
    6. 'Mimi' 
    7. >>> mimi.name = 'MIMI'   # 将mimi的name属性改为大写 
    8. >>> mimi.name 
    9. 'MIMI' 
    10. >>> Cat.name   # Cat类的name属性并没有改变 
    11. 'Mimi' 
    12. >>> miaomiao = Cat()   # 新实例化一个实例 
    13. >>> miaomiao.name   # 新实例的name并没有受到前一个实例影响 
    14. 'Mimi' 

    2、实例方法

    可以使用def关键字在类中定义任意数量的方法。方法的第一个参数通常为self,它用来引用和调用实例。在类中定义方法和定义普通的函数没有太多区别。下面在Cat类中定义了一个名为eat的方法:

    1. >>> class Cat: 
    2. ...     def __init__(self, name, age): 
    3. ...         self.name = name 
    4. ...         self.age = age 
    5. ...     def eat(self): 
    6. ...         print('{1}岁的{0}正在进食'.format(self.name, self.age)) 
    7. ... 

    可以使用实例调用类的实例方法:

    1. >>> mimi = Cat('Mimi'1
    2. >>> mimi.eat() 
    3. 1岁的Mimi正在进食 

    【Python基础知识】Python类的类属性、实例方法和类方法

    3、类方法

    类方法是将类本身作为对象进行操作的方法,也就是说,类方法调用的是类变量和类方法。类方法的语法格式如下:

    @classmethod

    def 方法名(cls[,参数]):

    方法体

    类方法使用@classmethod装饰,第一个参数为cls隐含参数,其余参数是可选的。下面给出两个简单的类方法的示例,第一个示例是创建只含有默认参数的类方法:

    1. @classmethod 
    2. def cfun(cls): 
    3.     print('成功进入类方法'

    第二个示例是创建含有其余参数的类方法:

    1. @classmethod 
    2. def cfun(cls, name): 
    3.     cls.name = name 
    4. print('成功进入类方法'

    调用类方法有两种方式,一种是类外调用,采用“类名.方法名(参数)”的形式;另一种是类内调用,采用“cls.方法名(参数)”的形式:

    1. >>> class play_game(object): 
    2. ...     top_score = 100 
    3. ...     @classmethod 
    4. ...     def look_again(cls): 
    5. ...         print('再次查看最高分数:%d' % cls.top_score) 
    6. ...     @classmethod 
    7. ...     def look_socre(cls): 
    8. ...         print('最高分数:%d' % cls.top_score) 
    9. ...         cls.look_again()   # 类内调用 
    10. ... 
    11. >>> play_game.look_socre()   # 类外调用 
    12. 最高分数:100 
    13. 再次查看最高分数:100 

    上述程序中,在类外采用“类名.方法名(参数)”的形式调用了类方法look_socre()。look_socre()类方法用@classmethod进行了装饰,并且内部调用了类属性top_score,打印最高分数;然后在类内采用“cls.方法名(参数)”的形式调用了另一个类方法look_again()。look_again()类方法的的功能是再次打印最高分数。因此,执行类调用代码后,先执行look_socre()类方法中的打印语句,后执行look_again()类方法中的打印语句。

    例如,创建一个学生类(Student),类属性city的默认值为'北京';在类中创建一个类方法get_city(),该类方法的功能是打印类属性。利用类方法set_city()修改城市,代码如下:

    1. >>> class Student: 
    2. ...     city = '北京' 
    3. ...     @classmethod 
    4. ...     def get_city(cls): 
    5. ...         print('城市:'cls.city) 
    6. ...     @classmethod 
    7. ...     def set_city(cls, cty): 
    8. ...         cls.city = cty 
    9. ... 
    10. >>> Student.get_city() 
    11. 城市: 北京 
    12. >>> Student.set_city('上海'
    13. >>> Student.get_city() 
    14. 城市: 上海 

    下面比较一下类方法与实例方法的相同点和不同点。

    类方法与实例方法的相同点如下:

    ①都可以在类内调用。

    ②都可以通过实例调用。

    类方法与实例方法的不同点如下:

    ①类方法第一个默认参数为cls;实例方法第一个默认参数为self。

    ②类方法可以通过类名直接调用。

    ③类方法内只能调用类属性和类方法。

    类方法的作用如下:

    ①方便类直接调用。

    ②可以修改类属性和类方法。

    ③减少创建多个实例时所占用的内存空间,加快运行速度。

    课程好礼申请领取
    您的姓名
    您的电话
    意向课程
     

    中公优就业

    官方QQ

    扫描上方二维码或点击一键加群,免费领取价值599元网课,加群暗号:599。 一键加群

    >>本文地址:
    注:本站稿件未经许可不得转载,转载请保留出处及源文件地址。

    推荐阅读

    优就业:ujiuye

    关注中公优就业官方微信

    • 关注微信回复关键词“大礼包”,领80G学习资料
    QQ交流群
    领取免费网课
    (加群备注“网站”)
    IT培训交流群 加入群聊 +
    软件测试 加入群聊 +
    全链路UI/UE设计 加入群聊 +
    Python+人工智能 加入群聊 +
    互联网营销 加入群聊 +
    Java开发 加入群聊 +
    PHP开发 加入群聊 +
    VR/AR游戏开发 加入群聊 +
    大前端 加入群聊 +
    大数据 加入群聊 +
    Linux云计算 加入群聊 +
    优就业官方微信
    扫码回复关键词“大礼包”
    领取80G学习资料

    测一测
    你适合学哪门IT技术?

    1 您的年龄

    2 您的学历

    3 您更想做哪个方向的工作?

    获取测试结果
     
    课程资料、活动优惠 领取通道
     
     
    韩国毛茸茸的丰满妇女,亚洲国内自拍愉拍,高清性色生活片97,亚洲日本成本人观看 网站地图