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 · 4595 次点击
    这是一个创建于 2407 天前的主题,其中的信息可能已经有所发展或是发生改变。
    面向对象写一个用户类,实现用户注册登录登出。有一种特殊用户是管理员,除了正常的用户功能外,还可以让某个用户登出也就是踢出,手写代码试试?主要考察类操作,题目还是比较基础的。
    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   ·   实用小工具   ·   4437 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 04:08 · PVG 12:08 · LAX 20:08 · JFK 23:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.