V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Apr 12, 2018 via iPhone · 5325 views
    This topic created in 2951 days ago, the information mentioned may be changed or developed.
    面向对象写一个用户类,实现用户注册登录登出。有一种特殊用户是管理员,除了正常的用户功能外,还可以让某个用户登出也就是踢出,手写代码试试?主要考察类操作,题目还是比较基础的。
    27 replies    2018-04-13 11:14:35 +08:00
    holajamc
        1
    holajamc  
       Apr 12, 2018   ❤️ 1
    <script src="https://gist.github.com/jamcplusplus/746c2e28855f1b0e6b0dfefdda1d5f77.js"></script>
    我是萌新,求指导)
    pmispig
        2
    pmispig  
       Apr 12, 2018   ❤️ 2
    这种纯业务的东西和 python 面向对象基础有什么关系?
    KIDJourney
        3
    KIDJourney  
       Apr 12, 2018   ❤️ 2
    出这种题的面试官大概脑子有问题。
    dobelee
        4
    dobelee  
       Apr 12, 2018 via Android   ❤️ 2
    看到 2 楼 3 楼我就放心了。大部分人脑子还是正常的。。
    qsnow6
        5
    qsnow6  
       Apr 12, 2018
    @holajamc registration 呢
    shuizhengqi
        6
    shuizhengqi  
       Apr 12, 2018
    知道你是遇到难题了,好了下一位
    holajamc
        7
    holajamc  
       Apr 12, 2018
    @qsnow6 噗忘记了)
    CSM
        8
    CSM  
       Apr 12, 2018 via Android   ❤️ 1
    @holajamc script 标签很灵性
    wizardforcel
        9
    wizardforcel  
       Apr 12, 2018 via Android
    @pmispig 当然有关系,管理员在业务系统里面是个字段,任何用继承来实现的人都是生搬硬套,得扣分。
    binux
        10
    binux  
       Apr 12, 2018 via Android
    @wizardforcel 权限系统是怎么设计的还两说呢,你怎么就知道管理员就是个字段了?
    dychenyi
        11
    dychenyi  
       Apr 12, 2018
    从设计模式上来看,绝对需要继承,再来个超级管理员怎么办? 你还是字段?
    这题也就考了个继承,设计几个 group 类,guest-普通用户-管理员-超管 就行了
    bookding0
        12
    bookding0  
       Apr 12, 2018
    > 除了正常的用户功能外

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

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


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


    interface GodUserService{


    @inject AuthorityService

    @inject SessionService

    @inject UserCURDService



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

    其它的,设置成方法。

    说话,这种没脑子的题,有啥可学的?
    lihongjie0209
        21
    lihongjie0209  
       Apr 12, 2018
    @crb912 #20 增加一个超级管理角色怎么办
    prolic
        22
    prolic  
       Apr 12, 2018 via Android
    不知道你们是怎么实现的,反正我是给踢出接口加个鉴权,查下用户类型,不对就返回 error,用不到 oop 这么高级的东西
    crb912
        23
    crb912  
       Apr 12, 2018 via Android
    @lihongjie0209 你让我想起了 Django 后端,超级管理员,管理员,用户,去年做过比这个还复杂的权限的项目。 如果只是这个题,把属性从 bool 值改成 int 算了,1,表示超管,2 是普通管理员,3 是用户。设置好权限,允许 1 分配 2 和 3,2 可以分配 3,3 什么也做不了,只能自己登入登出
    LokiSharp
        24
    LokiSharp  
       Apr 12, 2018
    既然都说面向对象了,这题考的是继承啊,创建一个 User 类,实现 User 基本操作 然后 Admin User 类继承 User 类,另外实现 Admin 操作
    northisland
        25
    northisland  
       Apr 13, 2018
    我来组成题目
    Hopetree
        26
    Hopetree  
       Apr 13, 2018
    Django 的事情为什么要我自己写
    HowToMakeLove
        27
    HowToMakeLove  
       Apr 13, 2018
    建议参考一个 PHP 的 YII2 框架里的 UserIdentxxx 类
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3258 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 13:58 · PVG 21:58 · LAX 06:58 · JFK 09:58
    ♥ Do have faith in what you're doing.