2013-12-08 175 views
-2

字符串我已經作出了計劃,但我是越來越輸出輸出不打印在python

(<q3v3.Student instance at 0x023BB620>, 'is doing the following modules:', ' <q3v3.Module instance at 0x023BB670> <q3v3.Module instance at 0x023BB698>') 

例如,上面的輸出應該給我愛麗絲做以下模塊:生物學,化學

幫助

這是我的全碼:

class Student : 
    def __init__(self,students): 
     self.students= students 
     print self.students 

    #def __str__(self): # when i used this i've got error type TypeError: __str__ returned non-string (type NoneType) 
    #print str(self.students) 


class Module: 
    def __init__(self,modules): 
     self.modules = modules 
     print self.modules 

    #def __str__(self): 
     #print str(self.modules) 


class Registrations (Student,Module): 
    def __init__(self): 
     self.list= [] 
     self.stulist = [] 
     self.modulist= [] 

    def __iter__(self): 
     return iter(self.list) 
    def __str__(self): 
     return str(self.list) 


    def add(self,students,modules): 
     self.list.append((students,modules)) 
     #print (self.list) 



    def students(self,modules): 
     for i in self.list: 
      if i[1] == modules: 
       self.modulist.append((i[0])) 
     return iter(self.modulist) 


    def __str__(self): 
     return str(self.students) 


    def modules(self,students): 
     for i in self.list: 
      if i[0] == students: 
       self.stulist.append((i[1])) 
     return iter(self.stulist) 


    def __str__(self): 
     return str(self.modules) 

我需要導入我的程序能夠運行它這樣的:

from q3v4 import * 


james = Student('james') 
alice = Student('alice') 
mary = Student('mary') 

agm = Module('agm') 
ipp = Module('ipp') 

r = Registrations() 
r.add(james,agm) 
r.add(alice,agm) 
r.add(alice,ipp) 


mstr = '' 
for m in map(str,r.modules(alice)): 
    mstr = mstr+' '+m 
print(alice, 'is doing the following modules:', mstr) 
sstr = '' 
for s in map(str,r.students(agm)): 
    sstr = sstr+' '+s 
print(agm, 'has the following students:', sstr) 

print(r) 
+1

顯示您的代碼。 – mchfrnc

+1

您是否爲'Student'和'Module'類定義了'__str__'方法? – Sinkingpoint

+0

你的問題是非常unclaer :) – Chameleon

回答

3

你可以在你的Student類中定義__str__方法,做這樣的事情:

def __str__(self): 
    return self.name # Here the string you want to print 
0

你使用Python 2?如果是這樣,print是一個關鍵字,而不是一個函數。有兩種方法可以解決你的問題:

  1. print foo, bar代替print(foo, bar)

    的區別在於print(foo, bar)實際打印出元組(foo, bar),其使用各元素的repr()表示,而不是它的str()

  2. 在您文件的最頂端,寫入from __future__ import print_function。這會神奇地將print從關鍵字轉換爲函數,導致您的代碼按預期工作。

如果你使用Python 3,我的答案是不相關的。

+0

我有導入錯誤。它說沒有名爲Future的模塊 – user3072782

+0

@ user3072782:你使用的是什麼版本的Python? – Blender

+0

即時通訊使用Python版本2.7.1 – user3072782