一个Python类Class编写的小工具

本文介绍了如何使用Python和生成器技术创建一个工具,用于生成随机的用户姓名(单字名、双字名)、性别和社交媒体用户跟随者数量。通过扩展`FakeUser`类,可以批量生成所需数量的用户信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用Python处理数据或者是开发网站时,有时候会使用一些无意义的假数据,比如用户详情页信息。我们来制作这样一个填充用户假数据的小工具,这个小工具的设计思路如下:

先创建三个元组,分别用来储存姓、单字名、双字名:

fn=('李','王','张','刘')
ln1=('娉','览','菜','屹')
ln2=('治明','正顺','书铎')

定义父类FakeUser:

class FakeUser:
    def fake_name(self,one_word=False,two_words=False):
        if one_word:
            full_name=random.choice(fn)+random.choice(ln1)
        elif two_words:
            full_name = random.choice(fn) + random.choice(ln2)
        else:
            full_name=random.choice(fn)+random.choice(ln1+ln2)
        print(full_name)
    def fake_gender(self):
        gender=random.choice(['男','女','未知'])
        print(gender)

定义子类SnsUser:

class SnsUser(FakeUser):
    def get_followers(self,few=True,a_lot=False):
        if few:
            followers=random.randrange(1,50)
        elif a_lot:
            followers = random.randrange(200, 10000)
        print(followers)

 完整代码如下:

import random

fn=('李','王','张','刘')
ln1=('娉','览','菜','屹')
ln2=('治明','正顺','书铎')
class FakeUser:
    def fake_name(self,one_word=False,two_words=False):
        if one_word:
            full_name=random.choice(fn)+random.choice(ln1)
        elif two_words:
            full_name = random.choice(fn) + random.choice(ln2)
        else:
            full_name=random.choice(fn)+random.choice(ln1+ln2)
        print(full_name)
    def fake_gender(self):
        gender=random.choice(['男','女','未知'])
        print(gender)

class SnsUser(FakeUser):
    def get_followers(self,few=True,a_lot=False):
        if few:
            followers=random.randrange(1,50)
        elif a_lot:
            followers = random.randrange(200, 10000)
        print(followers)

user_a=FakeUser()
user_b=SnsUser()
user_a.fake_name()
user_b.get_followers(few=True)

运行结果如下:

张书铎
34

此时,我们每次只能产生一个随机名字和随机的跟随者数量,那如何批量产生呢?

我们要用到一个新的概念,叫做“生成器”。简单的来说,在函数中我们只要在任意一种循环(loop)中使用yield返回结果,就可以得到类似于range 函数的效果。代码如下:

import random

fn=('李','王','张','刘')
ln1=('娉','览','菜','屹')
ln2=('治明','正顺','书铎')
class FakeUser:
    def fake_names(self,amount=1,one_word=False,two_words=False):
        n=0
        while n<=amount:
            if one_word:
                full_name=random.choice(fn)+random.choice(ln1)
            elif two_words:
                full_name = random.choice(fn) + random.choice(ln2)
            else:
                full_name=random.choice(fn)+random.choice(ln1+ln2)
            yield full_name
            n+=1
    def fake_gender(self,amount=1):
        n=0
        while n<=amount:
            gender=random.choice(['男','女','未知'])
            yield gender
            n+=1

class SnsUser(FakeUser):
    def get_followers(self,amount=1,few=True,a_lot=False):
        n=0
        while n<=amount:
            if few:
                followers=random.randrange(1,50)
            elif a_lot:
                followers = random.randrange(200, 10000)
            yield followers
            n+=1

user_a=FakeUser()
user_b=SnsUser()
for name in user_a.fake_names(30):
    print(name)
for gender in user_a.fake_gender(30):
    print(gender)

给定fake_names和fake_gender参数值,即可生成所需数量的名字和性别,这里我们生成10个,效果如下:

张览
李正顺
王娉
李娉
王治明
王书铎
张览
王览
王屹
王正顺
王娉
未知




未知


未知

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值