相关疑难解决方法(0)

__str__和__repr__之间的区别?

之间有什么区别__str____repr____str__

python repr magic-methods

2545
推荐指数
21
解决办法
61万
查看次数

如何更改Python类的字符串表示形式?

在Java中,我可以覆盖toString()我的类的方法.然后Java的print函数打印由其定义的对象的字符串表示toString().有没有相当于Java的Python toString()

例如,我有一个PlayCard课程.我有一个PlayCard的实例c.现在:

>>> print(c)
<__main__.Card object at 0x01FD5D30>
Run Code Online (Sandbox Code Playgroud)

但我想要的是:

>>> print(c)
A?
Run Code Online (Sandbox Code Playgroud)

如何自定义类实例的字符串表示形式?

我正在使用Python 3.x.

python printing string python-3.x

198
推荐指数
2
解决办法
13万
查看次数

如何为类对象创建自定义字符串表示形式?

考虑这个课程:

class foo(object):
    pass
Run Code Online (Sandbox Code Playgroud)

默认字符串表示形式如下所示:

>>> str(foo)
"<class '__main__.foo'>"
Run Code Online (Sandbox Code Playgroud)

如何将此显示设为自定义字符串?

python class

181
推荐指数
4
解决办法
18万
查看次数

Python是否具有toString()等价物,我可以将db.Model元素转换为String吗?

我正在编写一个ToDo列表应用程序,以帮助自己开始使用Python.该应用程序在GAE上运行,我将待办事项存储在数据存储中.我想向他们展示每个人的项目,而且他们一个人.问题是该应用程序当前向所有用户显示所有项目,因此我可以看到您所写的内容,并且您可以看到我写的内容.我想把我的todo.author对象转换成一个字符串,看看它是否与用户名相匹配将是一个好的开始,但我无法弄清楚如何做到这一点.

这就是我在main.py中的内容

... 
user = users.get_current_user()

if user:
    nickname = user.nickname()
    todos = Todo.all()
    template_values = {'nickname':nickname, 'todos':todos}
...

def post(self):

    todo = Todo()
    todo.author = users.get_current_user()
    todo.item = self.request.get("item")
    todo.completed = False

    todo.put()      
    self.redirect('/')
Run Code Online (Sandbox Code Playgroud)

在我的index.html中我最初有这个:

<input type="text" name="item" class="form-prop" placeholder="What needs to be done?" required/>
...
 <ul>
{% for todo in todos %}
  <input type="checkbox"> {{todo.item}} <hr />
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)

但我想只向创建它们的用户显示项目.我想过尝试

{% for todo in todos %}
    {% ifequal todo.author nickname %}
  <input type="checkbox"> {{todo.item}} <hr /> …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine django-templates

45
推荐指数
3
解决办法
8万
查看次数

Python:乘法覆盖

所以,我有一个自定义类,它具有__mul__与int一起使用的函数.然而,在我的程序中(在库中),它被反过来调用,即我的类2 * x在哪里x.有没有办法可以让它使用我的__mul__功能呢?

python overriding operator-keyword

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

如何在Python中打印对象列表时应用__str__函数

那么这个交互式python控制台代码片段将告诉所有内容:

>>> class Test:
...     def __str__(self):
...         return 'asd'
...
>>> t = Test()
>>> print(t)
asd
>>> l = [Test(), Test(), Test()]
>>> print(l)
[__main__.Test instance at 0x00CBC1E8, __main__.Test instance at 0x00CBC260,
 __main__.Test instance at 0x00CBC238]
Run Code Online (Sandbox Code Playgroud)

基本上我想asd在打印列表时打印三个字符串.我也试过,pprint但它给出了相同的结果.

python printing string list object

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

我们如何获得__repr __()的默认行为?

如果有人在python中编写一个类,并且未能指定自己的__repr__()方法,则为它们提供默认方法.但是,假设我们要编写一个与默认行为具有相同或相似行为的函数__repr__().但是,我们希望此函数具有默认__repr__()方法的行为,即使__repr__()该类的实际重载也是如此.也就是说,假设我们想要编写一个与默认行为具有相同行为的函数,__repr__()而不管是否有人重载了该__repr__()方法.我们怎么做?

class DemoClass:
    def __init__(self):
        self.var = 4
    def __repr__(self):
        return str(self.var)

def true_repr(x):
    # [magic happens here]
    s = "I'm not implemented yet"
    return s

obj = DemoClass()

print(obj.__repr__())

print(true_repr(obj))
Run Code Online (Sandbox Code Playgroud)

期望的输出:

print(obj.__repr__())打印4,但print(true_repr(obj))打印如下:
<__main__.DemoClass object at 0x0000000009F26588>

python repr representation python-3.x

15
推荐指数
3
解决办法
1866
查看次数

Python 中的过滤对象数组

我正在使用 Python 来挖掘一个相当大的项目并挖掘有关它的信息。我能够创建一个ProjectFiles 数组,但是我很难弄清楚如何过滤它。

class ProjectFile:
    def __init__(self, filename: str,
                 number_of_lines: int,
                 language: str,
                 repo: str,
                 size: int):
        self.filename = filename
        self.number_of_lines = number_of_lines
        self.language = language
        self.repo = repo
        self.size = size
Run Code Online (Sandbox Code Playgroud)

我如何过滤ProjectFile特定对象的数组repo

例如,假设我想过滤repo属性为 的对象SomeCocoapod

我寻找过 的示例filter,但我找到的所有内容都使用简单的示例,例如str或 的列表int

python oop python-3.x

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

如何使用内置的__str __(self)方法使用pprint打印对象?

我有一个Python脚本来处理包含报告使用信息的.txt文件.我想找到一种方法来使用pprint的pprint(vars(object))函数干净地打印对象的属性.

该脚本读取文件并创建Report类的实例.这是班级.

class Report(object):
    def __init__(self, line, headers):
        self.date_added=get_column_by_header(line,headers,"Date Added")
        self.user=get_column_by_header(line,headers,"Login ID")
        self.report=get_column_by_header(line,headers,"Search/Report Description")
        self.price=get_column_by_header(line,headers,"Price")
        self.retail_price=get_column_by_header(line,headers,"Retail Price")

    def __str__(self):
        from pprint import pprint
        return str(pprint(vars(self)))
Run Code Online (Sandbox Code Playgroud)

我希望能够干净地打印报告的实例a-la-pprint.

for i,line in enumerate(open(path+file_1,'r')):
    line=line.strip().split("|")
    if i==0:
        headers=line

    if i==1:
        record=Report(line,headers)
        print record
Run Code Online (Sandbox Code Playgroud)

我打电话的时候

print record
Run Code Online (Sandbox Code Playgroud)

对于单个Report实例,这是我在shell中得到的.

{'date_added': '1/3/2012 14:06',
'price': '0',
'report': 'some_report',
'retail_price': '0.25',
'user': 'some_username'}
 None
Run Code Online (Sandbox Code Playgroud)

我的问题是双重的.

首先,这是一种干净地打印对象属性的好/期望方式吗?有或没有pprint有更好的方法吗?

第二,为什么呢

None
Run Code Online (Sandbox Code Playgroud)

最后打印到shell?我很困惑那来自哪里.

谢谢你的任何提示.

python string pprint

12
推荐指数
5
解决办法
2万
查看次数

对象列表上的__str__方法

python的新手,尝试创建卡片组并希望为print(deck)=>实现一种打印方法,该方法给出了我的卡片的打印列表。

我的类PlayingCard具有str方法,该方法可以很好地打印单张纸牌。

但是,当我创建Deck.cards对象(这是PlayingCard对象的列表)时,似乎无法一次打印所有纸牌。

试着更换海峡再版。尝试返回str中的字符串列表

from enum import Enum

class Value(Enum):

    Two = 2
    Three = 3
    Four = 4
    Five = 5 
    Six = 6
    Seven = 7
    Eight = 8
    Nine = 9
    Ten = 10
    Jack = 11
    Queen = 12
    King = 13 
    Ace = 14

class Suit(Enum):

    Spades = 1
    Hearts = 2
    Clubs = 3
    Diamonds = 4


class PlayingCard():

    def __init__(self,value,suit):
        self.value = value
        self.suit = …
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
1
解决办法
97
查看次数