之间有什么区别__str__和__repr__在__str__?
在学习Python艰难之路第21页,我看到这个代码示例:
x = "There are %d types of people." % 10
...
print "I said: %r." % x
Run Code Online (Sandbox Code Playgroud)
为什么%r在这里使用而不是%s?你何时使用%r,何时使用%s?
任何人都可以修改namedtuple或提供替代类,以便它适用于可变对象吗?
主要是为了可读性,我想要类似于namedtuple这样做:
from Camelot import namedgroup
Point = namedgroup('Point', ['x', 'y'])
p = Point(0, 0)
p.x = 10
>>> p
Point(x=10, y=0)
>>> p.x *= 10
Point(x=100, y=0)
Run Code Online (Sandbox Code Playgroud)
必须可以腌制生成的对象.并且根据命名元组的特征,当表示时,输出的排序必须与构造对象时参数列表的顺序相匹配.
我正在尝试用我自己学习python而且我坚持使用__repr__函数.虽然我已经阅读了很多帖子__repr__以及python文档.所以我决定在这里提出这个问题.下面的代码解释了我的困惑.
class Point:
def __init__(self,x,y):
self.x, self.y = x,y
def __repr__(self):
return 'Point(x=%s, y=%s)'%(self.x, self.y)
def print_class(self):
return 'Point(x=%s, y=%s)'%(self.x, self.y)
p = Point(1,2)
print p
print p.print_class()
Point(x=1, y=2)
Point(x=1, y=2)
Run Code Online (Sandbox Code Playgroud)
如果正常函数也可以执行类似的任务,那么__repr__结束print_class()(在我的情况下是正常函数)函数的额外优势是什么.
我正在使用Python 3.x,我正在尝试从__repr__函数中获取一个f-string报告,但我似乎无法获得以下格式化字符串,以便按照我期望的方式工作.
我经常收到"SyntaxError:解析时意外的EOF"
def __repr__(self):
return f"Player has {'Soft' if self.soft > 0} {self.count}. Cards are {self.cards}."
Run Code Online (Sandbox Code Playgroud)
如果self.soft> 0},则给出错误的部分是{'Soft'.如果不清楚,我试图包含"Soft"IFF self.soft> 0这个词,如果没有,不要在字符串中添加任何单词.
我通常会写一个 a__repr__作为展示如何重新创建实例的方式。例如:
class Component:
def __init__(self, start, end):
self.start = start
self.end = end
def __repr__(self):
return f'{self.__class__.__name__}(start={self.start}, end={self.end})'
Run Code Online (Sandbox Code Playgroud)
是否有一种“标准”的方式来编写__repr__,如果没有,是否有关于如何编写的建议选项/最佳实践,或者它完全是主观的?
当我尝试使用块模块时,我正在玩 NLTK
enter import nltk as nk
Sentence = "Betty Botter bought some butter, but she said the butter is bitter, I f I put it in my batter, it will make my batter bitter."
tokens = nk.word_tokenize(Sentence)
tagged = nk.pos_tag(tokens)
entities = nk.chunk.ne_chunk(tagged)
Run Code Online (Sandbox Code Playgroud)
当我输入时,代码运行良好
>> entities
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
enter code here Out[2]: Tree('S', [Tree('PERSON', [('Betty', 'NNP')]), Tree('PERSON', [('Botter', 'NNP')]), ('bought', 'VBD'), ('some', 'DT'), ('butter', 'NN'), (',', ','), ('but', 'CC'), ('she', 'PRP'), ('said', 'VBD'), ('the', 'DT'), ('butter', 'NN'), ('is', 'VBZ'), ('bitter', …Run Code Online (Sandbox Code Playgroud) 我想将类的名称设置为类中的一个变量,这样当我打印类时,我得到它们的名字,我已经尝试过设置__name__但是它不起作用.
这是我的班级
class SNMPData(object):
def __init__(self, device='', speed_down=0, speed_up=0, bgp_peer_state='', bgp_summary='', error=''):
self.device = device
self.speed_down = speed_down
self.speed_up = speed_up
self.bgp_peer_state = bgp_peer_state
self.bgp_summary = bgp_summary
self.error = error
self.__name__ = device
Run Code Online (Sandbox Code Playgroud)
我创建了一个对象列表,然后尝试打印它们
>>> list = [SNMPData(device='dev_1',speed_down=1),SNMPData(device='dev_2',speed_down=2)]
>>> print(list)
[<SNMPData object at 0x7ff052a42ef0>, <SNMPData object at 0x7ff052a42b38>]
>>>
Run Code Online (Sandbox Code Playgroud)
而不是在0x的SNMPData对象....是否可以打印
['SNMPData dev_1','SNMPData dev_2']
Run Code Online (Sandbox Code Playgroud)
代替?
在此先感谢您的帮助.
在命令行输入"example"时,Python返回'example'.我在网上找不到任何解释这个的东西.所有参考资料都在print命令的上下文中与字符串对话,我得到了关于使用双引号,单引号,三引号,转义命令等的所有材料.
但是,我无法解释为什么在命令行输入用双引号括起来的文本总是返回由单引号括起来的相同文本.是什么赋予了?谢谢.
我需要从一对夫妇开始对四代家谱进行建模。之后,如果我输入一个人的名字和“兄弟”或“姐妹”或“父母”之类的关系,我的代码应该输出该人的兄弟或姐妹或父母。我对 python 有一定的了解,并在 DSA 中自学。我想我应该将数据建模为字典并为具有两个根节点(即第一对节点)的树 DS 编码。但我不知道如何开始。我只需要知道如何开始对家谱进行建模以及如何进行编码的方向。先感谢您!
python ×10
repr ×3
string ×2
algorithm ×1
eof ×1
f-string ×1
family-tree ×1
ghostscript ×1
ipython ×1
mutable ×1
namedtuple ×1
nltk ×1
python-2.7 ×1
python-3.x ×1