关于类的问题
我主要是对类不熟悉,书和网上查的帖子看了好久,还是搞不懂怎么用。问题是如下我按照自己逻辑补充的代码究竟有什么错误,类属性实例属性在方法里要怎么用,
另外,我看到说类属性是类中所有方法共享的,那为什么我在方法里用类属性会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 **********# 本帖最后由 lxping 于 2022-12-17 10:23 编辑
在方法中访问类属性需要使用 类名.属性名,不然是没办法访问到该属性的,也没办法改变属性的值,参照变量的LEGB规则。
第059讲:类和对象(II)| 课后测试题及答案:https://fishc.com.cn/thread-213273-1-1.html中第六题你可以看看 lxping 发表于 2022-12-17 09:33
在方法中访问类属性需要使用 类名.属性名,不然是没办法访问到该属性的,也没办法改变属性的值,参照变量的 ...
多谢,我有看到关于类属性在方法中访问要使用 类名.属性名,试过把方法内的doc和root都加上类名或self,但运行GetInfoCount方法的时候会报错,root.find("count")结果为notype,导致我也不确定了。原因是要找的count是元素的属性,应该用root.get("count")。 一、类属性
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
页:
[1]