Printing out incidence values for Class Object - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Printing out incidence values for Class Object (/thread-41872.html) |
Printing out incidence values for Class Object - SquderDragon - Mar-31-2024 Hello all, new coder here. I wanted to start by creating a character generation code. I created the following code:- import random class Character: def __init__(self, name, age): self.name = name self.age = age def __str__(self): return f"Name: {self.name}\nAge: {self.age}\n{self.clothing}" class Clothing: def __init__(self): self.top = self.generate_clothing("top") self.lower_body = self.generate_clothing("lower body") self.leggings = self.generate_clothing("leggings") self.belt = self.generate_clothing("belt") self.sword = self.generate_clothing("sword") self.shield = self.generate_clothing("shield") self.undergear = self.generate_undergear() def generate_clothing(self, clothing_type): materials = ["cotton", "silk", "leather"] colors = ["red", "blue", "green", "black", "white", "yellow"] material = random.choice(materials) color = random.choice(colors) return f"{color} {material} {clothing_type}" def generate_undergear(self): materials = ["iron", "steel", "bronze"] colors = ["silver", "gold", "bronze"] material = random.choice(materials) color = random.choice(colors) return f"{color} {material} undergear (sword and shield)" def generate_random_name(): prefixes = ["Sir", "Lord", "Lady", "Princess", "Prince", "Master", "Mistress"] suffixes = ["blade", "fire", "ice", "thunder", "storm", "shadow", "light"] name = random.choice(prefixes) + " " + random.choice(suffixes) return name def generate_random_age(): return random.randint(18, 65) def generate_character(): name = generate_random_name() age = generate_random_age() return Character(name, age) def main(): character = generate_character() print("\nCharacter Details:") print(character) if __name__ == "__main__": main()running this returns:- my question hopefully is simple. How do I change or add to this code so the output would return the details from self.clothing = Clothing()? i.e. what is output as <__main__.Clothing object at 0x104c25e10>?Example would be :- What I mean is outputting the values that should be random generated from class Clothing:?I can see that Name and Age are being selected and output from class Character: def __init__(self, name, age): self.name = name self.age = age but nothing from class Clothing: Thanks! SquiderDragon RE: Printing out incidence values for Class Object - deanhystad - Mar-31-2024 Character needs clothing arttributes, just like it has name and age attributs, RE: Printing out incidence values for Class Object - menator01 - Mar-31-2024 Here is one possible way. from random import choice, randint class Character: def __init__(self, clothing, gear): self.name = choice(('Charlie', 'Troy', 'Elaina', 'Brenda', 'Ralph')) self.age = randint(18, 35) self.clothing = clothing self.gear = gear def __str__(self): return f' Name: {self.name}\n Age: {self.age}\n Clothing: {self.clothing}\n Gear: {self.gear}' class Clothing: def __init__(self): self.material = ('cotton', 'silk', 'leather') self.color = ('red', 'blue', 'green', 'black', 'white', 'yellow') self.top = f'{choice(self.color)} colored top made from {choice(self.material)}' self.pants = f'{choice(self.color)} colored pants made from {choice(self.material)}' self.belt = f'{choice(("rope", "leather", "cloth"))} belt' def __str__(self): return f'{self.top}, {self.pants}, {self.belt}' class Gear: def __init__(self): self.material = ('copper', 'bronze', 'iron', 'steel') self.color = ('gold', 'silver', 'bronze') self.sword = f'{choice(self.color)} colored sword made from {choice(self.material)}' self.shield = f'{choice(self.color)} colored shield made from {choice(self.material)} with a {choice(('dragon', 'eagle', 'snake'))} emblem on it' def __str__(self): return f'{self.sword} and {self.shield}' print(Character(Clothing(), Gear()))Output
RE: Printing out incidence values for Class Object - SquderDragon - Apr-01-2024 (Mar-31-2024, 08:44 PM)menator01 Wrote: Here is one possible way. Excellent! Many thanks SquiderDragon |