作者KSJ (阿真)
看板Python
标题Re: [问题] 关於import
时间Sat Oct 29 00:50:53 2011
没用过Django fromwork
有空您可以分享一下使用这个的好处吗XD
我也蛮想架个网站 目前想使用zope 不过看大家都用Django说 0.0
以上题外话...
下答是我的一点见解 您参考一下
※ 引述《kalawang (反求诸己)》之铭言:
: 大家好,小弟是python新手。
: 这两天看了一下python的online document加上Django framework来研究网页
: 不过在Django的online tutorial里
: 下面这几行小弟一直看不懂,有人能帮我解释一下吗?
: from django.db import models
: class Poll(models.Model):
: question = models.CharField(max_length=200)
: pub_date = models.DateTimeField('date published')
: class Choice(models.Model):
: poll = models.ForeignKey(Poll)
: choice = models.CharField(max_length=200)
: votes = models.IntegerField()
: 问题1)
: 就我研究python语法的结果,django.db应该是指在django/db这个资料夹下
: 把models.py这个module import进来。
: 不过我在django/db底下没看到models.py这个file。只有看到一个models/的资
: 料夹
: 所以import是可以import目录而不是单纯档案吗?
python提供 module与package
相当於 档案 与 资料夹
import module 没什麽大问题
而import package 白话一点仅是 import package资料夹下的 __init__.py module
所以要让资料夹能被python视为package
其里面必须要有 __init__.py 这个档案(空的也可以)
我的认知里
package算是个方便管理与整理module的东西吧
: 问题2)
: 然後看说明是说question是一个class instance, 所以CharField应该就是一个
: class定义。那CharField前面的models代表的是什麽意思? class的class?
: 还是说是跟c++ namespace概念类似?
models就是package(如果它是一个里面有 __init__.py 档案的资料夹的话)
package里有东西 一定是从 __init__.py 档案里写入或是import进来的
当然还有里面其它的 module 或 package 可以继续 import...
至於C++...我还是个新手 囧
: 问题3)
: 线上说明在测试SQL的API时
: 有一行
: p = Poll(question="What's up?", pub_date=datetime.datetime.now())
: 我不懂这句的语法,Poll是一个class,那里面应该给了default argument。
: 所以在这个object instance下,p.question是一个string而不是一个
: class instance了吗? p.pub_date同理也不是一个class instance了?
只看上面的话 p有没有question是无法决定的
单就语法来看
Poll是class p就是他的instance
括号里面的的东西是给 Poll初始化instance p时用的变数而已
跟上面你的程式码Poll里的question没有关系
一般来说Poll会有这样的Method在里面
def __init__(self,question,pub_date=OOXX,...):
self.maybe_a_label = question
....
让Poll初始化时使用一些变数这样
可是你上面程式码没有
我猜是继承了models.Model这个class 的 __init__ method
不然那些变数放不进Poll里
至於class里面给或不给default应该都可以 视需求而定
: 感谢回答,我是python新手请大家多帮忙。
以上
有错还请帮忙指正
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.176.140.46
※ 编辑: KSJ 来自: 180.176.140.46 (10/29 00:57)
1F:推 kalawang:Very clear!! Thanks 10/29 09:51