Probleme mit namensabrage

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
jayx
User
Beiträge: 9
Registriert: Donnerstag 13. Dezember 2012, 18:28

Hi, ich hab folgendes problem

ich möchte gerne erst in class player mich als creator definieren, dann in class challanger den spieler nach den gleichen variablen fragen um sie dann mit < > = wieder auszugeben, ala du bist größer/kleiner als ich usw. nur möchte er mir den raw input nicht als variable schreiben und gibt dann nur "dein name ist also "name"" aus.
zudem kommt danach ein traceback fehler name self wäre nicht definiert..

wie wo warum?


Code: Alles auswählen

###

import time
import os
import sys
#import stuff              # from other files
#import morestuff   	      # from more other files
from sys import exit
#from random import 


class Player:
	'''Definiere Player'''
	def __init__(self, name, age, height, descent):
		self.name = name
		self.age = age 
		self.height = height
		self.descent = descent
		print "Found %s" % self.name
		
		
	def request_info(self):
		'''Auskunft ueber vorhandene Informationen'''
		print "Name: %s, Alter: %s Jahre, Groesse %s cm, Abstammung %s" %(self.name, self.age, self.height, self.descent)

		
p = Player("Jayx", 23, 186, "Deutsch")

users = [p]
for user in users:				#the same as 
	user.request_info()	

#p.request_info()				# this

class Challanger:
	'''challanger init'''
	def __init__(self, name, age, height, descent):
		self.name = name	
		self.age = age
		self.height = height
		self.descent = descent
		
	def request_info(self):
		print "name %s" %self.name
		
	#evtl vererbung hier mit request_info
	

class NameCheck(Challanger):

	def __init__(self, name, age, height, descent):
		Challanger.__init__(self, name, age, height, descent)
		self.name = name
		self.age = age
		self.height = height
		self.descent = descent
		
			
		
	def Same_Name(self, name, age):
		name = raw_input("Dein name:")
		age = raw_input("age:")
		
		if name == "jayx":
			print "du heisst wie ich"
	
		else:
			print "dein name ist also: %s" %self.name
		
		
nc = NameCheck("name", 23, 186, "ALBANIEN")

users = [nc]
nc.Same_Name("%s", "age") %self.name
danke vielmals
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo und willkommen im Forum!

In Same_Name bindest du den Namen an name, für die Formatierung benutz du allerdings self.name.

Den Fehler erhälst du, da das self außerhalb der Instanz von NameCheck nicht existiert. Du meinst nc.name. Das ist allerdings absolute Grundlage, da solltest du noch einmal durchs Tutorial gehen. Insgesamt ist dein Code recht unschön, vielleicht geht noch jemand anderes auf die Details ein.

Zu den Fehlermeldungen: Wenn eine Fehler geworfen wird, dann beschreibe den Fehler nicht nur, sondern poste die ganze Fehlermeldung inklusive Traceback. Du magst da zwar noch nicht viel mit anfangen können, für die Helfenden ist es aber durchaus eine Unterstützung.
Das Leben ist wie ein Tennisball.
Antworten