分享一道 Python 面向对象基础题,欢迎新手都来学习下 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
hippoboy
V2EX    Python

分享一道 Python 面向对象基础题,欢迎新手都来学习下

  •  
  •   hippoboy 2018-04-12 10:55:44 +08:00 via iPhone 4954 次点击
    这是一个创建于 2741 天前的主题,其中的信息可能已经有所发展或是发生改变。
    面向对象写一个用户类,实现用户注册登录登出。有一种特殊用户是管理员,除了正常的用户功能外,还可以让某个用户登出也就是踢出,手写代码试试?主要考察类操作,题目还是比较基础的。
    27 条回复    2018-04-13 11:14:35 +08:00
    holajamc
        1
    holajamc  
       2018-04-12 11:56:15 +08:00   1
    <script src="https://gist.github.com/jamcplusplus/746c2e28855f1b0e6b0dfefdda1d5f77.js"></script>
    我是萌新,求指导)
    pmispig
        2
    pmispig  
       2018-04-12 12:45:31 +08:00   2
    这种纯业务的东西和 python 面向对象基础有什么关系?
    KIDJourney
        3
    KIDJourney  
       2018-04-12 13:05:56 +08:00   2
    出这种题的面试官大概脑子有问题。
    dobelee
        4
    dobelee  
       2018-04-12 13:43:24 +08:00 via Android   2
    看到 2 楼 3 楼我就放心了。大部分人脑子还是正常的。。
    qsnow6
        5
    qsnow6  
       2018-04-12 13:48:55 +08:00
    @holajamc registration 呢
    shuizhengqi
        6
    shuizhengqi  
       2018-04-12 13:55:49 +08:00
    知道你是遇到难题了,好了下一位
    holajamc
        7
    holajamc  
       2018-04-12 14:03:07 +08:00
    @qsnow6 噗忘记了)
    CSM
        8
    CSM  
       2018-04-12 14:04:18 +08:00 via Android   1
    @holajamc script 标签很灵性
    wizardforcel
        9
    wizardforcel  
       2018-04-12 14:20:41 +08:00 via Android
    @pmispig 当然有关系,管理员在业务系统里面是个字段,任何用继承来实现的人都是生搬硬套,得扣分。
    binux
        10
    binux  
       2018-04-12 14:24:31 +08:00 via Android
    @wizardforcel 权限系统是怎么设计的还两说呢,你怎么就知道管理员就是个字段了?
    dychenyi
        11
    dychenyi  
       2018-04-12 15:05:27 +08:00
    从设计模式上来看,绝对需要继承,再来个超级管理员怎么办? 你还是字段?
    这题也就考了个继承,设计几个 group 类,guest-普通用户-管理员-超管 就行了
    bookding0
        12
    bookding0  
       2018-04-12 15:51:17 +08:00
    > 除了正常的用户功能外

    看到这句我仿佛看见了之前某个产品经理的需求文档……
    nullcc
        13
    nullcc  
       2018-04-12 16:04:38 +08:00
    真要搞这种功能请写在 service 层
    yuhr123
        14
    yuhr123  
       2018-04-12 16:25:23 +08:00
    让我们新手进来学习,分享的内容呢?
    est
        15
    est  
       2018-04-12 16:31:19 +08:00
    class User: def login(self):pass; def logout(self): pass

    class Admin(User): def logout_other(self): pass


    就这两行?
    laqow
        16
    laqow  
       2018-04-12 16:52:55 +08:00 via Android
    新手感觉只是实现的话感觉不同用户之间只是权限差异,全部从 user 生成对象,参数就是权限就可以了,用继承增加复杂性也难扩展新权限。服务用户端分离的话没必要把用户信息一直存在内存里,接口搞太多更没意义了。
    lihongjie0209
        17
    lihongjie0209  
       2018-04-12 17:04:49 +08:00
    剩下的自己填空吧, 不过想不通为什么要把这么多功能写到一个类里面


    interface GodUserService{


    @inject AuthorityService

    @inject SessionService

    @inject UserCURDService



    }
    dddd1919
        18
    dddd1919  
       2018-04-12 18:54:09 +08:00
    新手来骗代码完成工作,鉴定完毕
    cxyfreedom
        19
    cxyfreedom  
       2018-04-12 19:56:02 +08:00 via iPhone
    真要区分权限,正常业务不都是数据库字段层面考虑的吗 [说错轻喷。考继承的话,不如用 Foo Bar 之类的代替考考吧。
    crb912
        20
    crb912  
       2018-04-12 20:05:44 +08:00 via Android
    用户类,初始化两个属性 ,
    1.is_admin 是管理员,取 Ture,否则 false,
    2.is_active,表明状态,登陆,即修改它为 True,登出改为 false

    其它的,设置成方法。

    说话,这种没脑子的题,有啥可学的?
    lihongjie0209
        21
    lihongjie0209  
       2018-04-12 20:11:58 +08:00
    @crb912 #20 增加一个超级管理角色怎么办
    prolic
        22
    prolic  
       2018-04-12 20:21:58 +08:00 via Android
    不知道你们是怎么实现的,反正我是给踢出接口加个鉴权,查下用户类型,不对就返回 error,用不到 oop 这么高级的东西
    crb912
        23
    crb912  
       2018-04-12 20:37:44 +08:00 via Android
    @lihongjie0209 你让我想起了 Django 后端,超级管理员,管理员,用户,去年做过比这个还复杂的权限的项目。 如果只是这个题,把属性从 bool 值改成 int 算了,1,表示超管,2 是普通管理员,3 是用户。设置好权限,允许 1 分配 2 和 3,2 可以分配 3,3 什么也做不了,只能自己登入登出
    LokiSharp
        24
    LokiSharp  
       2018-04-12 22:18:33 +08:00
    既然都说面向对象了,这题考的是继承啊,创建一个 User 类,实现 User 基本操作 然后 Admin User 类继承 User 类,另外实现 Admin 操作
    northisland
        25
    northisland  
       2018-04-13 09:30:20 +08:00
    我来组成题目
    Hopetree
        26
    Hopetree  
       2018-04-13 10:08:59 +08:00
    Django 的事情为什么要我自己写
    HowToMakeLove
        27
    HowToMakeLove  
       2018-04-13 11:14:35 +08:00
    建议参考一个 PHP 的 YII2 框架里的 UserIdentxxx 类
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5896 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 03:19 PVG 11:19 LAX 20:19 JFK 23:19
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86