Implements `_.method()`
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- python
- Lĩnh vực
- developer-experience
Hướng nghiên cứu
Bắt đầu với phần triển khai _Callable.getattr được trình bày trong issue và so sánh với lớp trung gian Attr được đề xuất. Xác định hành vi dự kiến cho _.method() và các phương thức nhận một đối số, sau đó xác nhận rằng API kết quả xử lý cả việc truy cập thuộc tính lẫn lời gọi phương thức mà không gây mơ hồ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
I'm opening this issue to discuss the possible ways to implement _.method()
Currently, we have this implementation:
class _Callable(object):
def __getattr__(
self,
key: str,
) -> Callable[[_LambdaDynamicProtocol[T1]], T1]:
return operator.attrgetter(key)
The problem here is that we return the operator directly:
>>> from lambdas import _
>>> _.method
operator.attrgetter('method')
>>> _.method()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: attrgetter expected 1 arguments, got 0
My idea is to create an intermediated class like _MathExpression:
class Attr: # Just ignore the name for now
def __init__(self, attr: str) -> None:
self._attrgetter = operator.attrgetter(attr)
def __call__(self, *args, **kwargs) -> Any:
if len(args) == 1:
return self._attrgetter(args[0])
return lambda obj: self._attrgetter(obj)(*args, **kwargs)
This implementation has a limitation, they won't work correctly if we try to call a method with one argument. This is hard because we don't know when the attribute is callable!
- Ngôn ngữ chính
- Python
- Star
- 286
- Fork
- 6
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của dry-python/lambdas
-
Python > 3.11 Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
dry-python/lambdas#196 ·
-
Bug in the docs Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 35/100
dry-python/lambdas#176 · 9 bình luận ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 38/100
dry-python/lambdas#116 ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
dry-python/lambdas#112 · 1 bình luận ·
-
enhancement good first issue hacktoberfest
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
dry-python/lambdas#4 ·
Tất cả issue của dry-python/lambdas
Issue tương tự
-
[Bug] reef-hermes tells me to resume with hermes --resume, which does not work from my shell Đang mởarea: harness bug status: needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Human-Agent-Society/reef#625 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 80/100
learningequality/kolibri#15351 · 2 bình luận ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Name consistency Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
eellak/triplestore#65 · 1 bình luận ·