鱼C论坛

 找回密码
 立即注册
查看: 2955|回复: 3

[已解决]关于类的问题

[复制链接]
发表于 2022-12-16 23:42:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我主要是对类不熟悉,书和网上查的帖子看了好久,还是搞不懂怎么用。

问题是如下我按照自己逻辑补充的代码究竟有什么错误,类属性实例属性在方法里要怎么用,
另外,我看到说类属性是类中所有方法共享的,那为什么我在方法里用类属性会not defind?

编程要求
根据提示,补充右侧编辑器Begin-End区间代码,完成InfoManager类的定义,实现如下的功能:

LoadInfo():从step5/data.xml中读取 XML 数据;
GetInfoCount():返回个人信息的条数,类型为int;
GetAge(name):返回名为name的人的年龄age,类型为int;
GetDescription(name):返回名为name的人的个人签名(元素的文本)。
为了简单起见,假设查询的人的信息一定存在。


import xml.etree.ElementTree as ET
class InfoManager:
    doc = None
    root = None
    def LoadInfo(self):
        #********** Begin *********#
        doc = ET.parse("step5/data.xml")
        root = doc.getroot()

        #********** End **********#
        
    def GetInfoCount(self):
        #********** Begin *********#
        count = int(root.find("count"))
        return count

        #********** End **********#   
            
    def GetAge(self,name):
        #********** Begin *********#
        for na in root.findall("info"):
            if na.get("name")==name:
                age = int(na.get("age"))
                return age

        #********** End **********#
        
    def GetDescription(self,name):
        #********** Begin *********#
        for na in root.findall("info"):
            if na.get("name")==name:
                return na.txt


        #********** End **********#
最佳答案
2022-12-17 09:33:58
本帖最后由 lxping 于 2022-12-17 10:23 编辑

在方法中访问类属性需要使用 类名.属性名,不然是没办法访问到该属性的,也没办法改变属性的值,参照变量的LEGB规则。
第059讲:类和对象(II)| 课后测试题及答案:https://fishc.com.cn/thread-213273-1-1.html中第六题你可以看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-17 09:33:58 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 lxping 于 2022-12-17 10:23 编辑

在方法中访问类属性需要使用 类名.属性名,不然是没办法访问到该属性的,也没办法改变属性的值,参照变量的LEGB规则。
第059讲:类和对象(II)| 课后测试题及答案:https://fishc.com.cn/thread-213273-1-1.html中第六题你可以看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-17 11:24:17 | 显示全部楼层
lxping 发表于 2022-12-17 09:33
在方法中访问类属性需要使用 类名.属性名,不然是没办法访问到该属性的,也没办法改变属性的值,参照变量的 ...

多谢,我有看到关于类属性在方法中访问要使用 类名.属性名,试过把方法内的doc和root都加上类名或self,但运行GetInfoCount方法的时候会报错,root.find("count")结果为notype,导致我也不确定了。原因是要找的count是元素的属性,应该用root.get("count")。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-17 11:25:37 | 显示全部楼层
一、类属性
1、声明在类的内部,实例方法的外部的属性(在class内,inint(self)方法之前)
2、类变量在class内,但不在class的方法内,存在类的内存里
3、类变量是该类所有实例共享的变量,但是实例对象只能访问,不可修改,每个实例对象去访问同一个类变量都将得到相同结果【实例名.类变量名】
4、类无权访问实例名
5、类变量可修改、新增、删除
————————————————
版权声明:本文为CSDN博主「阿漠老男孩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:ht tps://blog.csdn.net/fcygcyfv/article/details/123876634
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 21:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表