- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想将 python 函数的字符串表示更改为函数名称。
例如某些功能
def blah(x):
...
str(blah)
当前给出
所以我这样替换 __chuỗi__
:
blah.__str__=lambda: 'blah'
但它不会被 str(blah)
调用。
是否可以更改函数的 __chuỗi__
?
câu trả lời hay nhất
像那样替换 __chuỗi__
实际上对任何类型的对象都不起作用。内置函数类型并不特殊:
>>> class Foo(object):
vượt qua
>>> f = Foo()
>>> f.__str__ = lambda: 'f'
>>> str(f)
'<__main__.Foo object at 0x0000000002D13F28>'
>>> f.__str__()
'f'
đường
内置函数不通过通常的查找协议(protocol)查找 __chuỗi__
,它直接跳到查看其参数的类。所以你不能“覆盖”单个对象上的 __chuỗi__
方法;你必须在一个类上设置它才能应用于该类的所有对象。1
但话又说回来,内置函数类型并不特殊。您可以创建一个行为最像函数的类,然后使用它:
class Function(object):
def __init__(self, raw_function):
self.raw_function = raw_function
def __call__(self, *args, **kwargs):
return self.raw_function(*args, **kwargs)
def __str__(self):
return self.raw_function.__name__
__call__
方法意味着您可以像调用函数一样调用此类的对象。这一个只是将它接收到的任何参数直接传递给底层原始函数并返回它返回的任何东西(或抛出它抛出的任何异常)。由于此类将单个函数作为参数,因此它也符合装饰器的模式:
@Function
def blah(x):
return x + 1
有了那个:
>>> blah
<__main__.Function object at 0x0000000002D13EB8>
>>> str(blah)
'blah'
>>> blah(33)
34
1 内置函数类型在某些方面是特殊的(我撒谎了),其中之一是您不能分配给它的属性(这是loại 本身,而不是任何特定函数对象的属性)。因此,在您认为如果您可以对内置函数类型进行 monkeypatch 以便 đường
hiện hữu tất cả 函数上以您想要的方式工作可能会很棒,那是行不通的。这可能是最好的;修改像内置函数类型这样全局和基本的东西将是发明一些非常奇怪的错误的好方法。
关于python - 如何替换函数的 __str__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22797580/
Tôi muốn thực hiện tìm kiếm và thay thế trên một chuỗi, chẳng hạn như mật khẩu. Như bạn đã biết từ câu hỏi, chuỗi được thay thế sẽ trở thành sdvvzrug. Nhưng thật không may, đoạn mã sau xuất ra bbbbcaab: $search = ran
Tôi đang sử dụng futurize --stage2 áp dụng một số chuyển đổi mã nguồn để làm cho mã python2 và python3 tương thích. Một trong những cách khắc phục là thay thế tất cả các phân vùng a/b bằng old_div(a/b), tôi muốn tránh điều này
Tôi đang sử dụng RStudio nhưng đầu ra trên bảng điều khiển của tôi bị cắt bớt. Tôi không thể tìm cách ngừng cắt ngắn (tôi đã thử tìm kiếm ?options và tìm kiếm trên Google lâu hơn mức tôi muốn thừa nhận). EDIT: Tôi xin lỗi! Tên dài ban đầu của tôi là "Đây
Tôi có một chồng các mảnh mà tôi sử dụng phép thay thế và phép cộng. Mã để thêm hoặc thay thế đoạn của tôi (trong Hoạt động của tôi) như sau
Tôi đang chèn một số chuỗi vào một mảng, nhưng trước khi làm điều đó tôi muốn làm theo những gì chủ đề nói. Để chỉ thay thế khoảng trắng bằng %20, tôi làm điều này: Name.push(linkText.replace(" ", "%20"));
Tôi đang cố gắng biên dịch và kiểm tra mã mà tôi đã thấy trực tuyến Mở rộng địa chỉ IP. Tuy nhiên, khi tôi cố gắng biên dịch nó, tôi gặp lỗi về phương thức thay thế StringBuilder. Nó nói: IPadd.java:52:
Tôi đang cố gắng viết lại một phần mã của mình bằng các tính năng mới nhất của dplyr bằng cách thay thế data.frame() bằng data_frame() và cbind() bằng bind_cols():
Gần đây tôi tình cờ gặp thay thế() và "[ x.tst s.tst s.tst [,1] [,2] [,3] [1,] 0 0 0
Tôi đang tự hỏi làm cách nào để thực hiện thay thế trong một tham số nhất định. Nếu bạn có một dòng như thế này: 123,Xin chào,Thế giới,(Tôi ở đây), không xác định và bạn muốn thay thế Thế giới bằng Foobar thì đó là một nhiệm vụ đơn giản
Làm thế nào để thoát khỏi dấu ngoặc kép trong một chuỗi? Ví dụ: đầu vào: "Không ai" đầu ra: \"Không ai\" Tôi đã thử một cái gì đó như thế này nhưng nó không hoạt động: String name = "Nobody";
Tôi đang làm một cái gì đó như: SQL sql sQl SqL var ps = document.getElementsByTagName('p'); for(var i = 0; i nhưng nó không thay thế văn bản.
Tôi đang cố gắng thay thế tất cả " bằng \" và phân tích chuỗi bằng JSON nhưng trình duyệt đưa ra lỗi SyntaxError: JSON Parse error: Unrecognized token '\' Dưới đây là mã.
Xin chào mọi người, đang gặp khó khăn ở đây... Có thể thay thế bất cứ thứ gì giữa dấu gạch chéo lên đầu tiên bằng "" nhưng giữ phần còn lại không? Ví dụ var sẽ là chuỗi "/anything-here-this-needs-to-be-re
Trong mã bên dưới, cảnh báo (a) trong hàm thay thế JavaScript sẽ cảnh báo về các chuỗi khớp, trong trường hợp này sẽ là {name} và {place}. Điều này hoạt động như được mô tả trong tài liệu tài liệu javascript, tức là.
+--------------------------------+ | bảng | +-------------------
Tôi đang cố gắng thay thế một chuỗi chứa " bằng \", dưới đây là quy trình tôi đã thử String s="\"/test /string\""; ");
var text = "a's ..a's ...\"... "; text = convert(text); hàm convert(text) { var n = text
Tôi đang cố gắng sử dụng hàm thay thế trong JavaScript nhưng tôi gặp sự cố. strNewDdlVolCannRegion = strNewDdlVolCannRegion.replace(/_being
Được rồi, trước hết tôi thực sự xin lỗi vì bài đăng cuối cùng của mình, nhưng tôi thực sự cần trợ giúp và tôi sẽ đưa những gì tôi thực sự muốn vào một mã rõ ràng hơn. Mình không giỏi javascript nên mong bạn giúp đỡ.
Tôi đang viết một ghi chú và gặp phải rào cản. Có thể có cách hiệu quả hơn để thực hiện việc này nhưng tôi khá mới với Python. Tôi đang cố gắng tạo danh sách địa chỉ IP do người dùng tạo. Tôi đang sử dụng bản in để xem các giá trị được tạo có chính xác không. khi tôi chạy mã này
Tôi là một lập trình viên xuất sắc, rất giỏi!