tuple([iterable])

  创建并返回一个元组对象。

  可以使用一个可迭代对象初始化元组。

>>> tuple(range(5))
(0, 1, 2, 3, 4)
>>> tuple('test')
('t', 'e', 's', 't')

 

class UserAdmin(admin.ModelAdmin):
    filter_vertical = ("m2m字段",) # 或filter_horizontal = ("m2m字段",)

super([type [, object-or-type]])

  返回父类的方法、对象。一般用于继承处理中,特别是初始化。

  在初始化中,super的参数可以省略。

class A:
    def __init__(self):
        print('Class A init')

class B(A):
    def __init__(self):
        super().__init__()
        print('Class B init')


class C(A):
    def __init__(self):
        super(C, self).__init__()
        print('Class C init')


>>> b = B()
Class A init
Class B init
>>> c = C()
Class A init
Class C init

public –
程序集内和程序集外的类都可以访问

 

sum(iterable [, start])

  对一个序列求和。

  参数start, 指定一个初始值,默认是0

>>> sum(range(5))
10
>>> sum(range(5), 3)
13
>>> sum({1,2,3})
6

using 程序集

3.ModelAdmin中提供了大量的可定制功能,如:

any(iterable)

  如果迭代器中的任意一个值为“真”则返回 True, 否则返回
False

  注意:如果迭代器为空,返回 False

>>> any([1,0,0])
True
>>> any([0,0,0])
False
>>> any([])
False

internal –
对程序集内部的所有类可见,但对程序集外部的类不可见

一.Django内置admin

all(iterable)

  如果迭代器中的所有值都为“真”则返回 True, 否则返回
False

  注意:
如果迭代器为空,返回 True

>>> all([1,1,1])
True
>>> all([1,0,1])
False
>>> all([])
True

选择主项目—引用—右键添加引用

 

dict(\*kwarg)  dict(mapping, **kwarg)  dict(iterable, **kwarg*)

  创建并返回一个字典对象。初始化参数可以有三种传入方式。

  关键字方式,将直接根据关键字生成字典

  迭代器方式,迭代器中的对象必须只有两个元素,第一个元素将作为key,第二个作为值

  映射方式,其实也是一种迭代器方式

  注: 当然也可以直接使用字典作为参数来初始化

>>> dict(one=1, two=2, three=3)
{'two': 2, 'one': 1, 'three': 3}
>>> 
>>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))
{'one': 1, 'two': 2, 'three': 3}
>>> 
>>> dict([('one', 1), ('two', 2), ('three', 3)])
{'one': 1, 'two': 2, 'three': 3}
>>> 
>>> dict({'one':1, 'two':2, 'three':3})
{'one': 1, 'two': 2, 'three': 3}

protected –
允许派生类的类访问该成员,即使程序集外部的继承该类的类也能访问该成员

class UserAdmin(admin.ModelAdmin):
    list_display = ('user', 'pwd', 'xxxxx')
    list_display_links = ('pwd',) 

max(iterable [, key, default])  max(arg1, arg2, \args [, key]*)

  返回最大值。要比较的参数可以是一个可迭代的对象,也可以直接传入对象列表。

  参数 key 可以改变默认的比较方式。

  当传入的是一个迭代器时,如果迭代器为空,则返回default值,如果没有传入default将产生异常。

>>> max([3,5,1,7,9,2])
9
>>> max('aaa', 'bbb', 'ccc')
'ccc'
>>> 
>>> max([(4,2), (3,3), (2,4)], key=lambda x: x[1])
(2, 4)
>>> max([], default='empty')
'empty'

protected internal –
对所有继承该类的类以及所有程序集内部的类可见

# 分页,每页显示条数
    list_per_page = 100

# 分页,显示全部(真实数据<该值时,才会有显示全部)
    list_max_show_all = 200

# 分页插件
    paginator = Paginator

 bool(x)

  如果对象为“真”则返回 True, 否则返回
False

>>> bool(0)
False
>>> bool(1)
True

右击解决方案—添加—新建项目—类库

 

globals()

  返回当前全局域的{对象: 值} 字典

>>> globals()
{'__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__doc__': None, 'a': <__main__.MyTest object at 0x7f04880fb780>, '__spec__': None, 'MyTest': <class '__main__.MyTest'>}

2.
必须对每个成员指定成员访问级别。如果不指定某个成员的访问级别,它的隐式访问级别为private

 

setattr(object, name, value)

  给对像的指定属性赋值。如果对象不存在该属性,将先创建该属性。

  注:参数 name 是一个字符串***


>>> class MyTest():
...     pass
... 
>>> a = MyTest()
>>> setattr(a, 'test', 'hello')
>>> getattr(a, 'test')
'hello'
>>> setattr(a, 'test', 'hello, world')
>>> getattr(a, 'test')
'hello, world'
>>> a.test
'hello, world'

类的访问修饰符:

class UserAdmin(admin.ModelAdmin):
    fieldsets = (
        ('基本数据', {
            'fields': ('user', 'pwd', 'ctime',)
        }),
        ('其他', {
            'classes': ('collapse', 'wide', 'extrapretty'),  # 'collapse','wide', 'extrapretty'
            'fields': ('user', 'pwd'),
        }),
    )

property(fget=None, fset=None, fdel=None, doc=None)

  属性装饰器。可以方便的访问对象的某个属性,避免直接操作内部属性。

  函数返回一个装饰属性,将关联 fget, fset, fdel 函数

  参数doc提供一个帮助信息。

  当用@property装饰类方法时,方法名将作为装饰属性,方法定义为只读。此时如果需要set和del需要配合@method.setter和@method.deleter使用

  注1: 两种实现方式中,get, set 和 del 都不是必须全部存在的

  注2: 两种实现方式中,get函数都只能有self参数

class MyTest:
    def __init__(self):
        self._x = None

    def getx(self):
        return self._x

    def setx(self, v): 
        self._x = v 

    def delx(self):
        del self._x

    x = property(getx, setx, delx, "The '_x' property")



class MyTest2:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, v): 
        self._x = v 

    @x.deleter
    def x(self):
        del self._x


>>> a = MyTest()
>>> a.x
>>> 
>>> a = MyTest()
>>> print(a.x)
None
>>> a.x = 'test'
>>> print(a.x)
test
>>> del a.x
>>> print(a.x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/taopeng/Workspace/CodeWars/tmp.py", line 7, in getx
    return self._x
AttributeError: 'MyTest' object has no attribute '_x'



>>> b = MyTest2()
>>> print(b.x)
None
>>> b.x = 3
>>> print(b.x)
3
>>> del b.x
>>> print(b.x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/taopeng/Workspace/CodeWars/tmp.py", line 25, in x
    return self._x
AttributeError: 'MyTest2' object has no attribute '_x'

类的访问性有两个级别:public 和
internal

radio_fields = {"ug": admin.VERTICAL} # 或admin.HORIZONTAL

str(object=”)  str(object=b”, encoding=’utf-8′, errors=’strict’)

  创建并返回一个字符串对象。

  可以使用指定的对象来初始化。初始化将使用对象的 __str__()
方法返回的值。

>>> str(12345)
'12345'
>>> str('test')
'test'
>>> str([1,2,3])
'[1, 2, 3]'
>>> class MyTest:
...     def __str__(self):
...         return 'Hello'
... 
>>> a = MyTest()
>>> str(a)
'Hello'

 

class UserAdmin(admin.ModelAdmin):

    date_hierarchy = 'ctime'

callable(object)

  判断对象是否可以调用,如果可以则返回 True, 否则返回
False

  类是可调用的,调用后返回一个类的实例。对象如果包含了__call__()方法也是可调用的。

  其实,只要可以写成
object()
的,都是callable

>>> def foo():
...     pass
... 
>>> callable(foo)
True
>>> 
>>> class MyTest:
...     def __call__(self):
...         pass
... 
>>> callable(MyTest)
True
>>> a = MyTest()
>>> callable(a)
True
>>> 
>>> b = 1
>>> callable(b)
False

 

class UserInfoInline(admin.StackedInline): # TabularInline
    extra = 0
    model = models.UserInfo


class GroupAdminMode(admin.ModelAdmin):
    list_display = ('id', 'title',)
    inlines = [UserInfoInline, ]

id(object)

  返回对象的内部ID值。

>>> id(123)
10923328
>>> id('test')
140589176043704
>>> id([1,2,3])
140589199591816

图片 1

25. show_full_result_count =
True,列表时,模糊搜索后面显示的数据个数样式

delattr(object, name)

  删除对象的一个属性(不能是对象的方法),但是不会影响该类的其他对象。同
del
object.name

  **注: 参数* name 是一个字符串


>>> class MyTest():
...     def __init__(self):
...         self.test = 'test'
... 
>>> a = MyTest()
>>> a.test
'test'
>>> b = MyTest()
>>> b.test
'test'
>>> delattr(a, 'test')
>>> a.test
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'MyTest' object has no attribute 'test'
>>> 
>>> b.test
'test'

3.
成员不能拥有比它的类更高的访问性

14. action,列表时,定制action中的操作

zip(\iterables*)

  将多个序列进行重新组合,返回一个元组列表。

  每个元组从各个序列中各提取一个值。因此元组的个数由最短的序列决定。

>>> list(zip([1,1,1], [2,2,2], [3,3,3]))
[(1, 2, 3), (1, 2, 3), (1, 2, 3)]
>>> 
>>> list(zip([1,2,3], [4,5,6], [7,8,9]))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> 
>>> list(zip([1,1,1], [2,2,2], [3,3]))
[(1, 2, 3), (1, 2, 3)]

 

图片 2

 

format(value [, format_spec])

  将value按格式化转化为字符串,并返回。

  目前较多的用法是调用字符串的format方法。

  format_spec
指定格式化方式,此处不展开(将会有专题博文)。

>>> format(10, 'b')
'1010'
>>> format('555', '0>5')
'00555'

1.
所有显式声明在类的声明中的成员都是相互可见的,无论它们的访问性说明如何

 

classmethod(function)

  一般作为函数装饰器 @classmethod

  将类中的一个方法指定为类方法。被指定的类方法第一个参数必须为cls(方法所在的类)

  类方法的调用可以直接通过类调用,即C.f();
也可以通过实例调用,即C().f()

  类方法有一个比较方便的用处就是作为类似C++中的初始化函数重载

class MyTest():
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day 

    @classmethod
    def from_string(cls, date_string):
        year, month, day = map(int, date_string.split('-'))
        return cls(year, month, day)

    def output(self):
        print('Birthday: {}-{}-{}'.format(self.year, self.month, self.day))



>>> a = MyTest(1989, 12, 26)
>>> a.output()
Birthday: 1989-12-26
>>> 
>>> b = MyTest.from_string('1990-1-1')
>>> b.output()
Birthday: 1990-1-1

添加新的程序集:

7. search_fields,列表时,模糊搜索的功能

ascii(object)

  该函数返回表示对象的可打印ascii字符串,如果字符串中含有非ascii字符,则以\x,
\u 或者 \U 编码来表示

  函数其实是返回了对象的 __repr__() 方法的值

>>> a = 123
>>> a.__repr__()
'123'
>>> ascii(a)
'123'
>>> 
>>> b = 'test'
>>> b.__repr__()
"'test'"
>>> ascii(b)
"'test'"
>>>
>>> class MyTest:
...     def __repr__(self):
...         return 'Hello, world.'
... 
>>> t = MyTest()
>>> t.__repr__()
'Hello, world.'
>>> ascii(t)
'Hello, world.'

图片 3

17. fields,详细页面时,显示字段的字段

 chr(i)

  返回Unicode对应的字符。

  参数范围为 0 —
1114111
, 超过此范围将产生异常

>>> chr(97)
'a'
>>> chr(1666)
'ڂ'
>>> chr(1200000)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: chr() arg not in range(0x110000)

标记为internal的类只能被它自己所在的程序集中的类看到,默认为internal访问级别

图片 4

 input([prompt])

  接收标准输入转为字符串并返回。

  prompt
为输入提示字符串,可以省略。

  注:如果读到 EOF 将产生异常。

>>> s = input('Enter: ')
Enter: hello
>>> s
'hello'

private –
只能被它自己的类的成员访问

9. preserve_filters,详细页面,删除、修改,更新后跳转回列表后,是否保留原搜索条件

print(\objects, sep=’ ‘, end=’\n’, file=sys.stdout, flush=False*)

  打印函数。可以一次打印多个对象。sep, end, file,
flush
如果需要修改,需以关键字形式指定。

  参数sep,多个对象的打印内容之间的分割符。

  参数end,所有对象内容输出完毕后输出的字符。

  参数file,
输出的地方,默认是标准输出,可以修改成文件等具有write()
方法的对象。

  参数flush,
是否立即输出。False
可能会暂时放入缓冲区。

  注: 对于自定义的对象,如果想被print调用需要具有
__str__() 方法

>>> print('hello,world')
hello,world
>>> print('hello', 'world')
hello world
>>> print('hello', 'world', sep='---')
hello---world
>>> print('hello', 'world', end='\n\n\n')
hello world


>>> print('hello', 'world', '123', flush=True)
hello world 123
>>> 
>>> class MyTest:
...     def __str__(self):
...         return 'test'
... 
>>> a = MyTest()
>>> print(a)
test

标记为Public的类可以被系统内的任何程序集访问;

 

len(s)

  返回对象的长度。对象一般是一个序列和一个集合。

  如果是其他对象,则对象必须包含 __len__()
方法,否则会产生异常。

>>> a = [1, 2, 3]
>>> len(a)
3
>>> b = 'abcdefg'
>>> len(b)
7
>>> 
>>> class MyTest:
...     def __len__(self):
...         return 5
... 
>>> c = MyTest()
>>> len(c)
5

成员的访问修饰符

10. save_as = False,详细页面,按钮为“Sava as new” 或 “Sava and add
another”

iter(object [, sentinel])

  返回一个迭代器对象,用于遍历,一般与 next() 配合使用。

  如果 sentinel 参数没有传入则 object 必须是一个可迭代的对象。

  如果 sentinel 参数有值,则object 必须是一个 callable
的对象,此时的遍历将重复调用object, 直到返回值等于
sentinel(将产生StopIteration异常)

>>> it = iter([1,2,3])
>>> next(it)
1
>>> next(it)
2
>>> next(it)
3
>>> next(it)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> 
>>> for i in iter([1,2,3]):
...     print(i)
... 
1
2
3
>>> f = open('test.txt', 'r')
>>> itf = iter(f.readline, '')
>>> next(itf)
'test line 1\n'
>>> next(itf)
'test line 2\n'
>>> next(itf)
'test line 3\n'
>>> next(itf)
'\n'
>>> next(itf)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> f.close()

 

divmod(a, b)

  返回 (a // b, a
% b)
的元组

  注:a,b可以为整型或者浮点型,但是不能是复数

>>> divmod(7, 3)
(2, 1)
>>> 
>>> divmod(4.3, 1.5)
(2.0, 1.2999999999999998)
>>> 
>>> (4.3 // 1.5, 4.3 % 1.5)
(2.0, 1.2999999999999998)
class UserAdmin(admin.ModelAdmin):
    # show_full_result_count = True # 1 result (12 total)
    # show_full_result_count = False  # 1 result (Show all)
    search_fields = ('user',)

type(object)  type(name, bases, dict)

  两个功能。传入的参数个数不同,功能不同

  一个参数时,返回对象所属的类。

  三个参数时,动态创建一个自定义类的对象。

  当需要动态创建一个类时,

  参数name, 类名

  参数bases, 类的基类,使用一个元组传入,因此可以有多个父类。

  参数dict, 类的属性和方法字典。{属性名=属性值,方法名=函数名},
其中“函数名”是一个已经定义的函数

  注: 直接通过字典传入的方法是一个静态方法。

>>> a = [1,2,3]
>>> type(a)
<class 'list'>
>>> 
>>> def test_func():
...     print('This is a test func.')
... 
>>> b = type('MyTest', (object, ), dict(test_attr='Hello', test_method=test_func))
>>> type(b)
<class 'type'>
>>> b.test_attr
'Hello'
>>> b.test_method()
This is a test func.
class UserAdmin(admin.ModelAdmin):
    fields = ('user',)

 

save_as_continue = True

# 如果 save_as=True,save_as_continue = True, 点击Sava as new 按钮后继续编辑。
# 如果 save_as=True,save_as_continue = False,点击Sava as new 按钮后返回列表。

locals()

  返回当前命名空间的{对象: 值} 字典。

>>> def foo():
...     i = 1
...     j = 2
...     k = 3
...     print(locals())
... 
>>> foo()
{'i': 1, 'k': 3, 'j': 2}
class UserAdmin(admin.ModelAdmin):

    search_fields = ('user', 'pwd'

dir([object])

  很有用的帮助函数。显示当前命名空间,对象或者类的所有属性和方法。

  object
可以为对象或者类,如果省略表示当前的命名空间

>>> class MyTest():
...     pass
... 
>>> def foo():
...     pass
... 
>>> a = 1
>>> 
>>> dir()
['MyTest', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'foo']
>>> 
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
>>> 
>>> d = dict()
>>> dir(d)
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

 

next(iterator [, default])

  返回迭代器中的下一个。一般与 iter() 配合使用。

  当迭代完成以后,如果传入了default参数,则返回default的值,否则产成StopIteration异常

>>> it = iter([1,2,3])
>>> next(it)
1
>>> next(it)
2
>>> next(it)
3
>>> next(it)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> 
>>> it = iter([1,2,3])
>>> next(it, default='end')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: next() takes no keyword arguments
>>> next(it, 'end')
1
>>> next(it, 'end')
2
>>> next(it, 'end')
3
>>> next(it, 'end')
'end'

 

hex(x)

  返回x的16进制字符串,字符串以’0x’开头,字符串中的字符都以小写形式表示。

  当x不是一个int型对象时,则对象必须定义一个__index__()
方法,则返回整型值,否则将产生异常。

>>> hex(64)
'0x40'
>>> hex(-10)
'-0xa'

发表评论

电子邮件地址不会被公开。 必填项已用*标注