社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

盘点一个Python面向对象的基础问题

Python绿色通道 • 3 年前 • 476 次点击  

↑ 关注 + 星标 ,每天学Python新技能




    
后台回复【大礼包】送你Python自学大礼包

一、前言

前几天在Python白银交流群【梅ᯤ⁵ᴳ】问了一个Python面向对象的问题,提问截图如下:

下图是他的运行报错截图:

二、实现过程

这里【hugo】给了一个指导,看上去就是字符串格式化重复使用的问题,只需要把前面的f去掉即可:

不过解决了一个问题,另外一个问题出现了,这里出现一个变量未定义的错误,【论草莓如何成为冻干莓】指出是缩进不对,调整缩进之后,又出来另外一个bug,如下图所示:

又是变量没有定义,不过这个问题并不是缩进那么简单了,【千葉ほのお】指出是面向对象的问题,调用的时候需要引入类名才可以。

类似的问题不只是这一处,如下图所示:

后来【瑜亮老师】给了一个正确的代码,如下所示:

class Student(object):    #定义一个Student的类
    def __init__(self, name, score):     #类里有两个属性:name和score
        self.name = name
        self.score = score
        
    def set_score(self,score):
        if int(score) >= 0 and int(score) <= 100:
            self.score = score
        else:
            raise(ValueError("分数必须是0 ~ 100"))

    #打印每个学生的姓名和分数
    def print_score(self):
        print("姓名是{},分数是{}".format(self.name, self.score))


if __name__ == '__main__':
    Mable = Student("Mable", 100)
    Mable.print_score()
    Mable.set_score(90)
    Mable.print_score()
    Mable.set_score(120)
    Mable.print_score()

顺利地解决了粉丝的问题。话说回来,解决问题是其次,更重要的是加固基础,学会举一反三,面向对象还是挺难的,加油!





    
  1. YYDS!用Python预测了世界杯冠军

  2. 真刑!又一个同行去吃“国家饭”了

  3. 这个网站,可以一键爬取网页上的所有图片!

  4. Python 教你快速批量下载抖音去水印短视频

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/150341