WARNING: I have been learning Python for all of 10 minutes so apologies for any stupid questions!
I have written the following code, however I get the following exception:
Message FileName Line Position Traceback Node31 exceptions.TypeError: this constructor takes no arguments
class Computer:name = "Computer1"ip = "0.0.0.0"screenSize = 17def Computer(compName, compIp, compScreenSize):name = compNameip = compIpscreenSize = compScreenSizeprintStats()returndef Computer():printStats()returndef printStats():print "Computer Statistics: --------------------------------"print "Name:" + nameprint "IP:" + ipprint "ScreenSize:" , screenSize // cannot concatenate 'str' and 'tuple' objectsprint "-----------------------------------------------------"returncomp1 = Computer()
comp2 = Computer("The best computer in the world", "27.1.0.128",22)
Any thoughts?
I'm going to assume you're coming from a Java-ish background, so there are a few key differences to point out.
class Computer(object):"""Docstrings are used kind of like Javadoc to document classes andmembers. They are the first thing inside a class or method.You probably want to extend object, to make it a "new-style" class.There are reasons for this that are a bit complex to explain."""# everything down here is a static variable, unlike in Java or C# where# declarations here are for what members a class has. All instance# variables in Python are dynamic, unless you specifically tell Python# otherwise.defaultName = "belinda"defaultRes = (1024, 768)defaultIP = "192.168.5.307"def __init__(self, name=defaultName, resolution=defaultRes, ip=defaultIP):"""Constructors in Python are called __init__. Methods with nameslike __something__ often have special significance to the Pythoninterpreter.The first argument to any class method is a reference to the currentobject, called "self" by convention.You can use default function arguments instead of functionoverloading."""self.name = nameself.resolution = resolutionself.ip = ip# and so ondef printStats(self):"""You could instead use a __str__(self, ...) function to return thisstring. Then you could simply do "print(str(computer))" if you wantedto."""print "Computer Statistics: --------------------------------"print "Name:" + self.nameprint "IP:" + self.ipprint "ScreenSize:" , self.resolution //cannot concatenate 'str' and 'tuple' objectsprint "-----------------------------------------------------"