2024-06-13 14:56:44 发布
网友
我想在没有参数的构造函数中使用默认值初始化变量,如下所示:
class Persons() def __init__(self): self.name="Joan" p1=Persons() print(p1.name)
因此,这个结果将是“琼”。它将打印此人的姓名。一切都好。但是如何对多个对象执行此操作?我想用不同的名称打印p2.name,p3.name,就像上面一样
p2.name
p3.name
我从一个要求我“创建一个不带参数的构造函数,用默认数据初始化变量”的练习中得到了这个信息
如果您的类可以提供一组可能的名称,那么您可以创建一个对象,每个对Person.__init__的调用都可以从中获得不同的名称。例如:
Person.__init__
from itertools import cycle class Person: names = cycle(["Alice", "Bob", "Carol", "Dan"]) def __init__(self): self.name = next(Person.names)
根据需要向池中添加尽可能多的名称
一旦初始名称集用完并且循环再次开始,名称必然会重复。再多做一点工作,我们至少可以改变每个周期产生名称的顺序:
from itertools import cycle import random class Person: def shuffled_cycle(names): while True: random.shuffle(names) yield from names names = shuffled_cycle(["Alice", "Bob", "Carol", "Dan"]) def __init__(self): self.name = next(Person.names)
当然,如果不担心重复的名字,只需从__init__内部调用random.choice。这要简单得多:
__init__
random.choice
import random class Person: def __init__(self): self.name = random.choice(["Alice", "Bob", "Carol", "Dan"])
到了极点,只需从一堆原始字母中生成随机名称:
import random import string class Person: def __init__(self): k = random.randint(3, 10) self.name = ''.join(random.sample(string.ascii_lowercase, k)).title()
只需添加名称作为参数:
class Persons() def __init__(self, name): self.name = name p1=Persons(“Joan”) print(p1.name)
或
p1.name = “Jim”
问题是你想用默认值初始化,你写的代码是正确的。每个“Person”类的新实例都会用相同的默认值初始化,这是很好的编码实践。因为它是相同的“default”值。然而,出于知识的考虑,我已经编写了一个小程序,可以给5个新的class Person实例起新的名字,但是不要在生产中使用,因为这是一种不好的做法,但有利于学习
class Person : #class Variable name_list=["Jhon","Naruto","James","Smith","Neo"] instance_count = 0 def __init__(self): #Resets instance count when instances become greater that 5 instance_count = instance_count%5 #Sets new name self.name = name_list[instance_count] #increment instance_count instance_count = instance_count + 1
如果您的类可以提供一组可能的名称,那么您可以创建一个对象,每个对
Person.__init__
的调用都可以从中获得不同的名称。例如:根据需要向池中添加尽可能多的名称
一旦初始名称集用完并且循环再次开始,名称必然会重复。再多做一点工作,我们至少可以改变每个周期产生名称的顺序:
当然,如果不担心重复的名字,只需从
__init__
内部调用random.choice
。这要简单得多:到了极点,只需从一堆原始字母中生成随机名称:
只需添加名称作为参数:
或
问题是你想用默认值初始化,你写的代码是正确的。每个“Person”类的新实例都会用相同的默认值初始化,这是很好的编码实践。因为它是相同的“default”值。然而,出于知识的考虑,我已经编写了一个小程序,可以给5个新的class Person实例起新的名字,但是不要在生产中使用,因为这是一种不好的做法,但有利于学习
相关问题 更多 >
编程相关推荐