小编Bha*_*rel的帖子

函数在类vs实例上表现不同

我希望一个特定的函数可以作为类方法调用,并且当它在一个实例上调用时表现不同.

例如,如果我有一个class Thing,我想Thing.get_other_thing()工作,但也thing = Thing(); thing.get_other_thing()表现不同.

我认为覆盖get_other_thing初始化方法应该有效(见下文),但这看起来有点hacky.有没有更好的办法?

class Thing:

    def __init__(self):
        self.get_other_thing = self._get_other_thing_inst()

    @classmethod
    def get_other_thing(cls):
        # do something...

    def _get_other_thing_inst(self):
        # do something else
Run Code Online (Sandbox Code Playgroud)

python methods class function python-descriptors

4
推荐指数
1
解决办法
76
查看次数

backend_youtube_dl.py”,第 54 行,在 _fetch_basic self._dislikes = self._ydl_info['dislike_count'] KeyError:'dislike_count'

我有以下用于下载 YouTube 视频的代码。我会自动检测它是播放列表还是单个视频。然而突然出现上述错误。可能是什么问题?

import pafy
from log import *
import tkinter.filedialog
import pytube

url = input("Enter url :")

directory = tkinter.filedialog.askdirectory()


def single_url(url,directory):
    print("==================================================================================================================")
    
    video = pafy.new(url)
    print(url)
    print(video.title)

    #logs(video.title,url)
    file_object  = open(directory+"/links.log", "a")
    file_object.write(video.title +' '+ url + '\n')
    file_object.close()
    print('Rating :',video.rating,', Duration :',video.duration,', Likes :',video.likes, ', Dislikes : ', video.dislikes)
    #print(video.description)

    best = video.getbest()
    print(best.resolution, best.extension)

    best.download(quiet=False, filepath=directory+'/'+video.title+"." + best.extension)

    print("saved at :", directory, " directory")
    print("==================================================================================================================")

def playlist_func(url,directory):
    try: 
        playlist = pytube.Playlist(url)
        file_object  = open(directory+"/links.log", "a")
        file_object.write('Playlist …
Run Code Online (Sandbox Code Playgroud)

python pafy

4
推荐指数
1
解决办法
4355
查看次数

如何使用 Python 打印矩阵

我正在尝试创建一个矩阵,然后使用 python 打印它,并具有以下预期输出:

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Run Code Online (Sandbox Code Playgroud)

代码如下:

    matrix=[[]]
    matrix = [[0 for x in range(4)] for x in range(4)]
    print matrix
Run Code Online (Sandbox Code Playgroud)

但输出如下:

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)

请告诉我为什么会得到这种类型的输出并帮助我找到正确的输出

python

3
推荐指数
1
解决办法
2万
查看次数

pyad:安装得很好,但说无法找到adbase

这让我非常困惑.我用pip安装了pyad,一切似乎都很好:

C:\WINDOWS\system32>pip install pyad
Collecting pyad
  Using cached pyad-0.5.16.tar.gz
Requirement already satisfied (use --upgrade to upgrade): setuptools in c:\python35\lib\site-packages (from pyad)
Requirement already satisfied (use --upgrade to upgrade): pywin32 in c:\python35\lib\site-packages (from pyad)
Installing collected packages: pyad
  Running setup.py install for pyad ... done
Successfully installed pyad-0.5.16
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用它时,我收到一个错误,抱怨没有找到adbase:

C:\WINDOWS\system32>python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyad import aduser
Traceback (most recent …
Run Code Online (Sandbox Code Playgroud)

python pip pyad

3
推荐指数
1
解决办法
2798
查看次数

Python的reverse()函数如何工作?

根据Python的文档,reversed()使用__getitem____len__if __reversed__未实现.

我遇到了一个奇怪的行为,但未能解释它:

>>> class A(dict):
...     pass
...
>>> reversed(A())
Traceback (most recent call last):
    ...
TypeError: 'A' object is not reversible

>>> class B(dict):
...     def __getitem__(self, key):
...         return super().__getitem__(key)
...     def __len__(self):
...         return super().__len__()
...
>>> reversed(B())
Traceback (most recent call last):
    ...
TypeError: 'B' object is not reversible

>>> class C:
...     def __getitem__(self, key):
...         return "item"
...     def __len__(self):
...         return 1
... …
Run Code Online (Sandbox Code Playgroud)

python cpython python-internals

3
推荐指数
1
解决办法
213
查看次数

如何将 IPv4 和 IPv6 源地址绑定到 Python 套接字?

我希望使用套接字创建一个绑定到 IPv4 和 IPv6 地址的 TCP 服务器。

有没有办法在不创建 2 个套接字的情况下做到这一点?

python sockets tcp ipv6

3
推荐指数
1
解决办法
3714
查看次数

为什么 float 对象与“is”运算符的行为不同?

据我所知,cpython 实现为某些相同的值保留相同的对象以节省内存。例如,当我创建 2 个带有 value 的字符串时hello,cpython 不会创建 2 个不同的字符串PyObject

>>> s1 = 'hello'
>>> s2 = 'hello'
>>> s1 is s2
True
Run Code Online (Sandbox Code Playgroud)

我听说过名字string interning。当我尝试用其他 python 类型检查它时,我发现几乎所有可哈希(不可变)类型都是相同的:

>>> int() is int()
True
>>> str() is str()
True
>>> frozenset() is frozenset()
True
>>> bool() is bool()
True
Run Code Online (Sandbox Code Playgroud)

几乎所有可变类型都是相反的(cpythonPyObject甚至为相同的值创建一个新的类型):

>>> list() is list()
False
>>> set() is set()
False
>>> dict() is dict()
False
Run Code Online (Sandbox Code Playgroud)

我认为这是因为我们可以对PyObject不可变对象使用相同的方法而不会出现任何问题。

当我看到该float类型的行为与其他不可变类型不同时,我的问题就出现了:

>>> float() is float() …
Run Code Online (Sandbox Code Playgroud)

python cpython immutability python-internals

3
推荐指数
1
解决办法
781
查看次数

使用 python pyad 访问对象 [<COMObject GetEx>] 的问题

我在尝试使用 pyad 访问活动目录用户属性时遇到问题。这是我的代码:

user = pyad.aduser.ADUser.from_cn("tuser")
print user.get_attribute(lastLogonTimestamp")
Run Code Online (Sandbox Code Playgroud)

这些是打印的属性:

C:\Users\tuser\Desktop\docb0t>python docb0t.py
[<COMObject GetEx>]
Run Code Online (Sandbox Code Playgroud)

我不知道如何从该对象中检索值。我该怎么做?

python pyad

2
推荐指数
1
解决办法
872
查看次数

os.walk的非ascii文件名问题

os.walk用来遍历一个文件夹.那里有一些非ascii命名文件.对于这些文件,os.walk给了我类似的东西???.txt.我不能open用这样的文件名调用.它抱怨[Errno 22] invalid mode ('rb') or filename.我应该如何解决这个问题?

我使用的是Windows 7,python 2.7.11.我的系统区域设置是en-us.

python python-2.7

2
推荐指数
1
解决办法
740
查看次数

如何在python中将数组打印为表格

我想打印一个阵列,如: Table = [(0,0,0),(0,0,1),(0,1,0)]

因此,我想将此数组打印为表格,例如:

0 0 0
0 0 1
0 1 0
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

我尝试了一个简单的方法,print Table但这会像这样打印数组:

[(0,0,0),(0,0,1),(0,1,0)]
Run Code Online (Sandbox Code Playgroud)

python

2
推荐指数
1
解决办法
3万
查看次数