使用@property从另一个类生成随机字符串



我有一个类可以打印字符串的次数:

class ABC:
def print_times(self, value):
for i in range(4):
print(value)

我希望能够传递值作为字符串或作为另一个类的属性来生成例如随机字符串。

import random
import string
class RS:
def __init__(self, length: int):
self.N = length
@property
def value(self):
return ''.join(random.choice(string.ascii_uppercase + string.digits)
for _ in range(self.N))

当调用

a = ABC()
rs = RS(10)
a.print_times(rs.value)

我总是得到相同的值,当我希望它是不同的属性。如果我直接调用它,我每次都得到随机结果…为什么会这样呢?

rs = RS(10)
print(rs.value)
print(rs.value)

当我想要它不同时,我总是得到相同的属性值。如果我直接调用它,每次都会得到随机结果……为什么会这样呢?

因为你调用函数一次,打印值4次。更准确地说,每次调用rs.value都会得到不同的结果,并且调用一次并打印该值4次。下面的代码可能帮助你,

import random
import string
class RS:
def __init__(self, length: int):
self.N = length
@property
def value(self):
return ''.join(random.choice(string.ascii_uppercase + string.digits)
for _ in range(self.N))

class ABC:
def __init__(self, length: int):
self.N = length
self.rs = RS(self.N)

def print_times(self):
for i in range(4):
print(self.rs.value)

a = ABC(10)
a.print_times()

相关内容

  • 没有找到相关文章