首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:连接两个字符串,用于从类中获取变量

Python:连接两个字符串,用于从类中获取变量
EN

Stack Overflow用户
提问于 2014-02-10 13:20:46
回答 1查看 2.9K关注 0票数 1

我有一个Python类,有一些变量。这类的定义如下:

代码语言:javascript
运行
复制
class student:
    def __init__(self,name,rollno,DOB,branch):
       self.name=name
       self.rollno=rollno
       self.DOB=DOB
       self.branch=branch
       self.books=[]
       self.fines=[]

我是,为学生添加了新的属性,并且需要存储相应的值(供将来使用)。这是使用setattr方法完成的,并且工作得很好。

代码片段:

代码语言:javascript
运行
复制
setattr(student,"date_of_join",date())

现在我正在处理这个问题,因为如果用户添加了一个新属性(比如"date_of_join"),,然后我更新了一个列表(studattr),最初包含了"name“、"rollno”、道布、“分支”、“book”、"fines"来更新属性列表。这意味着更新后的列表中还会添加"date_of_join“。

现在,如果我想访问学生实例的属性列表,那么我该如何做呢?(既然记录是动态更新的,假设我必须访问x.date_of_join,那么如何连接这两个字符串?有没有类似于python的os.path.join,或者更确切地说是linux的系统调用(合并两个字符串)?)

问题:

代码语言:javascript
运行
复制
for attribute in studattr:
    print attribute,x.attribute

{ This throws an Exception since the instance x has no variable or method named "attribute")  

PS:我尝试使用inspect.getmembers(x)和dirs(x),vars(x),(在堆栈溢出中提到),但是它只给出了一个主类主体中的变量/方法的列表,而不是init中的变量/方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-10 13:23:06

使用getattr()访问动态属性:

代码语言:javascript
运行
复制
for attr in student.studattr:
    print attr, getattr(student, attr)

或者使用vars()会给出学生当前属性的字典:

代码语言:javascript
运行
复制
for attr, value in vars(student).iteritems():
    print attr, value
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21678419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档