Hướng dẫn python override __hash__ - ghi đè python __hash__

6

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi đang cố gắng tạo một chức năng băm tùy chỉnh cho các chuỗi. Tôi muốn chuỗi băm theo tần số nhân vật của chúng theo trọng lượng. Vì vậy, hiih sẽ mang lại cùng một hàm băm. Tôi có thể ghi đè __hash__ không?

Hoặc đang tạo một lớp trình bao bọc giữ chuỗi và ghi đè __hash____eq__ theo cách duy nhất?

Đã hỏi ngày 21 tháng 11 năm 2012 lúc 22:39Nov 21, 2012 at 22:39

Darkskydarkskydarksky

19.7K61 Huy hiệu vàng162 Huy hiệu bạc249 Huy hiệu đồng61 gold badges162 silver badges249 bronze badges

5

Bạn muốn một loại có nguồn gốc với ngữ nghĩa bình đẳng khác nhau. Thông thường, cách tiếp cận được thực hiện sẽ là xác định cách thức hoạt động của công bằng, sau đó xây dựng phương pháp băm từ các cấu trúc xuất phát ở đó, vì nó cần thiết rằng băm đồng ý với sự bình đẳng. Đó có thể là:

import collections

class FrequencyString[str]:
    @property
    def normalized[self]:
        try:
            return self._normalized
        except AttributeError:
            self._normalized = normalized = ''.join[sorted[collections.Counter[self].elements[]]]
            return normalized

    def __eq__[self, other]:
        return self.normalized == other.normalized

    def __hash__[self]:
        return hash[self.normalized]

Đã trả lời ngày 21 tháng 11 năm 2012 lúc 23:34Nov 21, 2012 at 23:34

2

Giả định của bạn là đúng, bạn không thể ghi đè các cụm cơ sở trong Python. Mặc dù, tất nhiên, có thể ghi đè lên những gì str[] sẽ làm, nó sẽ không hoạt động cho các chuỗi chữ.

Nếu bạn đang viết mã cho pre-python 2.2, hãy xem lớp UserString nếu bạn muốn tạo của riêng mình: //docs.python.org/2/l Library/userdict.html#module-userstring

Nếu không, bạn có thể chỉ cần thừa kế str hoặc unicode

Trong trường hợp của bạn chỉ đơn giản là ghi đè lên phương thức __hash__ là đủ nếu bạn muốn sử dụng nó làm khóa Dict. Nhưng nếu bạn đang xem xét so sánh hơn bạn sẽ phải ghi đè lên __eq__ hoặc hi2

Đã trả lời ngày 21 tháng 11 năm 2012 lúc 22:43Nov 21, 2012 at 22:43

WolphwolphWolph

75,8K10 Huy hiệu vàng132 Huy hiệu bạc147 Huy hiệu đồng10 gold badges132 silver badges147 bronze badges

7

Bạn có thể kế thừa từ str, nhưng vì những người đó là bất biến, bạn phải phân lớp chúng theo một cách hơi khác. Nhiều khả năng bạn sẽ muốn tạo các kết quả mới từ các chuỗi hiện có, vì vậy bạn cũng phải ghi đè phương thức hi4. Bạn cũng có thể phải đưa vào các phương pháp đặc biệt bổ sung để đánh bại các tối ưu hóa mà Python làm.

Dưới đây là một ví dụ về các lớp con tích hợp str, đối tượng MAPSTR cho phép các trình giữ chỗ thay thế dễ dàng trong các hình thức.

Đã trả lời ngày 21 tháng 11 năm 2012 lúc 23:20Nov 21, 2012 at 23:20

KeithkeithKeith

40,9k10 Huy hiệu vàng55 Huy hiệu bạc75 Huy hiệu Đồng10 gold badges55 silver badges75 bronze badges

3

Hướng dẫn string circular print in python - chuỗi in hình tròn trong python

Đã hỏi 6 năm, 3 tháng trước 6 years, 3 months agoĐã xem 2k lần 2k times 1 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu ...

programming python Circular string Python Circular substring Circular substring skillrack

Hướng dẫn python aur - trăn và

Từ Python là gì?:Python là một ngôn ngữ lập trình được giải thích, tương tác, hướng đối tượng. Nó kết hợp các mô -đun, ngoại lệ, gõ động, các loại ...

programming python Python arch linux Switch python version Python 3.7 arch

Hướng dẫn how do i add a horizontal line to a graph in python? - làm cách nào để thêm một đường ngang vào biểu đồ trong python?

Xem thảo luậnCải thiện bài viếtLưu bài viếtĐọcBàn luậnXem thảo luậnCải thiện bài viếtLưu bài viếtĐọcBàn luậnaxhline[]Matplotlib là một thư viện Python ...

programming python Plt text Plt axhline Plot Python Plt grid Line plot Python Matplotlib draw line

Hướng dẫn what is difference between zip and enumerate in python? - sự khác biệt giữa zip và enumerate trong python là gì?

Câu trả lời cho câu hỏi được hỏi trong tiêu đề của bạn, Đó là Pythonic; Zip hoặc liệt kê ...? là: cả hai đều là. enumerate chỉ là một trường hợp ...

programming python Python zip Enumerate get index

Hướng dẫn yaml run python script - yaml chạy tập lệnh python

Bài viết này nhằm phác thảo những điều cơ bản của YAML và viết một tập lệnh Python đơn giản đọc chi tiết cấu hình từ tệp YAML.Nội dung chínhYaml là ...

Hướng dẫn python tuples use curly brackets true or false - bộ mã python sử dụng dấu ngoặc nhọn true hoặc false

>>> from __future__ import braces File , line 1 SyntaxError: not a chance Vâng, đó là giải thích rất nhiều. Tuy nhiên, lưu ý rằng Python không hỗ trợ ...

programming python Python curly brackets Python with braces Python dictionary

programming python

Hướng dẫn what are some good beginner projects for python? - một số dự án mới bắt đầu tốt cho python là gì?

Ngày 26 tháng 5 năm 2022Nếu tôi có thể đưa ra lời khuyên trước đây của mình khi tôi đang đấu tranh để học Python như một người mới bắt đầu, thì đó sẽ ...

programming python Mini project Python Python project ideas Python project GitHub Python source code Alarm clock Python

Hướng dẫn is python better than matlab for data science? - python có tốt hơn matlab cho khoa học dữ liệu không?

Cả Matlab và Python đều có thể làm những điều khá khác biệt và đáng kinh ngạc, điều này làm cho câu hỏi về Mat Mat Matlab so với Python. Khi xem xét Matlab hoặc ...

programming python Matlab vs Julia

Which of the following methods can be used to understand correlation between categorical variables?

Được đăng bởi 4 năm trước4 years agoLưu trữ Tôi đang tìm cách sử dụng một bootcamp để phát triển web bởi vì nó có vẻ là cách tốt nhất để nhảy vào ...

programming python DevOps

Hướng dẫn does python run on one thread? - python có chạy trên một luồng không?

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để làm sâu sắc ...

programming python Threading Python example Daemon thread Python Multithreading Python Stop thread Python Python concurrency Process in Python

Hướng dẫn filter 2d array python - lọc mảng 2d python

Trong bài viết này, chúng ta sẽ xem cách áp dụng bộ lọc theo điều kiện đã cho trong mảng hai chiều. Chúng ta phải có được đầu ra của các phần tử cần ...

programming python Filter numpy array

Hướng dẫn convert to base 16 python - chuyển đổi sang python cơ sở 16

Mã Python được cung cấp dưới đây chuyển đổi một số nguyên Python thành một chuỗi trong cơ sở tùy ý [từ 2 đến vô cực] và hoạt động theo cả hai hướng. ...

programming python

Hướng dẫn what does flush true do in python? - flush true làm gì trong python?

Hai câu trả lời hoàn hảo chúng tôi có ở đây,Anthon đã làm cho nó rất rõ ràng để hiểu, về cơ bản, dòng in về mặt kỹ thuật không chạy [in] cho đến khi ...

programming python Sys stdout flush Flush print Flush Python Python print flush Overwrite print Python End in Python

Hướng dẫn remove empty row in csv python - xóa hàng trống trong csv python

Bạn phải mở một tệp thứ hai, viết tất cả các dòng không trống vào nó, xóa tệp gốc và đổi tên tệp thứ hai thành tên gốc.Chỉnh sửa: Một dòng trống ...

programming python

Hướng dẫn what does flush true do in python? - flush true làm gì trong python?

Hai câu trả lời hoàn hảo chúng tôi có ở đây,Anthon đã làm cho nó rất rõ ràng để hiểu, về cơ bản, dòng in về mặt kỹ thuật không chạy [in] cho đến khi ...

programming python

Hướng dẫn what does flush true do in python? - flush true làm gì trong python?

Hai câu trả lời hoàn hảo chúng tôi có ở đây,Anthon đã làm cho nó rất rõ ràng để hiểu, về cơ bản, dòng in về mặt kỹ thuật không chạy [in] cho đến khi ...

programming python Sys stdout flush Flush print Flush Python Python print flush Overwrite print Python End in Python

Hướng dẫn remove empty row in csv python - xóa hàng trống trong csv python

Bạn phải mở một tệp thứ hai, viết tất cả các dòng không trống vào nó, xóa tệp gốc và đổi tên tệp thứ hai thành tên gốc.Chỉnh sửa: Một dòng trống ...

Hướng dẫn python access parent class variable - biến lớp cha truy cập python

Một lớp là bản thiết kế hoặc nguyên mẫu do người dùng xác định từ đó các đối tượng được tạo. Các lớp cung cấp một phương tiện của dữ liệu bó ...

Hướng dẫn can i add multiple values to dictionary python? - tôi có thể thêm nhiều giá trị vào python từ điển không?

Trong bài viết này, chúng tôi sẽ thảo luận về cách tạo và quản lý một từ điển trong đó các khóa có thể có nhiều giá trị.Trong Python, nếu chúng ta muốn ...

programming python Add dictionary Python

Hướng dẫn python os remove the system cannot find the file specified - python os loại bỏ hệ thống không thể tìm thấy tệp được chỉ định

Tôi muốn xóa một tệp. Tệp đó được tạo trước đó bởi cùng một chương trình mà tôi muốn xóa nó.Đây là những gì tôi có:USER_FILE_NAME = ...

programming python Undo os remove

Hướng dẫn comparing time in python - so sánh thời gian trong python

programming python

Hướng dẫn what does flush true do in python? - flush true làm gì trong python?

Hai câu trả lời hoàn hảo chúng tôi có ở đây,Anthon đã làm cho nó rất rõ ràng để hiểu, về cơ bản, dòng in về mặt kỹ thuật không chạy [in] cho đến khi ...

programming python Sys stdout flush Flush print Flush Python Python print flush Overwrite print Python End in Python

Hướng dẫn remove empty row in csv python - xóa hàng trống trong csv python

Bạn phải mở một tệp thứ hai, viết tất cả các dòng không trống vào nó, xóa tệp gốc và đổi tên tệp thứ hai thành tên gốc.Chỉnh sửa: Một dòng trống ...

Hướng dẫn python access parent class variable - biến lớp cha truy cập python

Một lớp là bản thiết kế hoặc nguyên mẫu do người dùng xác định từ đó các đối tượng được tạo. Các lớp cung cấp một phương tiện của dữ liệu bó ...

Hướng dẫn can i add multiple values to dictionary python? - tôi có thể thêm nhiều giá trị vào python từ điển không?

Trong bài viết này, chúng tôi sẽ thảo luận về cách tạo và quản lý một từ điển trong đó các khóa có thể có nhiều giá trị.Trong Python, nếu chúng ta muốn ...

programming python Add dictionary Python

Hướng dẫn python os remove the system cannot find the file specified - python os loại bỏ hệ thống không thể tìm thấy tệp được chỉ định

Tôi muốn xóa một tệp. Tệp đó được tạo trước đó bởi cùng một chương trình mà tôi muốn xóa nó.Đây là những gì tôi có:USER_FILE_NAME = ...

Hướng dẫn slicing 3d array python - cắt trăn mảng 3d

Indexing cũng giống với các kiểu dữ liệu khác trong python, như tuple và list.cũng giống với các kiểu dữ liệu khác trong python, như tuple và list.cũng giống với ...

programming python Python slice 3d array Python 3d array shape Numpy slicing

Hướng dẫn what are python slots? - khe trăn là gì?

Một cách đơn giản để cải thiện mã Python của bạnẢnh của M trên unsplashKhi chúng ta tạo một đối tượng từ một lớp, các thuộc tính của đối tượng ...

programming python Model Python __slots__ python __Dict__ Python Python gc __Getitem__ Python Python __del__ Size in Python Setattr Python

Hướng dẫn how to take input separated by newline in python - cách lấy đầu vào được phân tách bằng dòng mới trong python

0 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more. Tôi muốn chèn một danh sách số nguyên do dòng mới như ...

programming python Python input line

Hướng dẫn array to int python - mảng thành int python

Nếu bạn có [hoặc tạo] một chuỗi, bạn có thể sử dụng NP.FromString:np.fromstring:Nội phân chínhLàm thế nào để bạn chuyển đổi một mảng chuỗi thành một ...

programming python Int[] trong Python

Hướng dẫn how do you round a number to 2 decimal places in python? - làm thế nào để bạn làm tròn một số đến 2 chữ số thập phân trong python?

Bạn muốn làm tròn câu trả lời của bạn.round[value,significantDigit] là giải pháp thông thường để làm điều này, tuy nhiên điều này đôi khi không hoạt động ...

programming python Around Python Round a list

Hướng dẫn first and last digit in python assignment expert - chữ số đầu tiên và cuối cùng trong chuyên gia chuyển nhượng python

Các chữ số đầu tiên và cuối cùngCho hai số m và n, hãy viết một chương trình để đếm các số có cùng các chữ số đầu tiên và cuối cùng trong phạm vi ...

programming python

Hướng dẫn elliptic curve point multiplication python - đường cong elliptic điểm nhân python

Bài viết là sai lệch, bởi vì hàm double_and_add được viết cho các số, không phải điểm.P nên là một điểm, tức là tuple [3,4].Sau đó, bạn phải thực hiện ...

programming python What is Secp256k1? C++ Elliptic curve ECC ElGamal Python

Hướng dẫn pdf convert python - pdf chuyển đổi python

Bạn đang có nhu cầu muốn chuyển đổi file text, html, hay một trang web sang định dạng pdf ? Bạn muốn tìm một thư viện để thực hiện nó với đầy đủ các ...

programming python Pdfkit Python PDFKit Img2pdf

Hướng dẫn how do you find all occurrences of a substring in a string in python? - làm thế nào để bạn tìm thấy tất cả các lần xuất hiện của một chuỗi con trong một chuỗi trong python?

Không có chức năng chuỗi tích hợp đơn giản nào thực hiện những gì bạn đang tìm kiếm, nhưng bạn có thể sử dụng các biểu thức chính quy mạnh mẽ ...

programming python Substring Python

Hướng dẫn how do i change the first letter of a string in python? - làm cách nào để thay đổi ký tự đầu tiên của một chuỗi trong python?

Bài viết này sẽ thảo luận về các cách khác nhau để chỉ thay thế ký tự đầu tiên của một chuỗi trong Python.Mục lụcSử dụng lập chỉ mụcSử dụng thay ...

programming python Replace value Python

Hướng dẫn how to split pipe delimited string in python - cách chia chuỗi phân cách bằng dấu ống dẫn trong python

9 Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more. Hãy xem chuỗi sau:E|1256280||2014-01-05 17:54:00|1|2014-01-05 ...

programming python

Hướng dẫn elliptic curve point multiplication python - đường cong elliptic điểm nhân python

Bài viết là sai lệch, bởi vì hàm double_and_add được viết cho các số, không phải điểm.P nên là một điểm, tức là tuple [3,4].Sau đó, bạn phải thực hiện ...

programming python What is Secp256k1? C++ Elliptic curve ECC ElGamal Python

Hướng dẫn pdf convert python - pdf chuyển đổi python

Bạn đang có nhu cầu muốn chuyển đổi file text, html, hay một trang web sang định dạng pdf ? Bạn muốn tìm một thư viện để thực hiện nó với đầy đủ các ...

programming python Pdfkit Python PDFKit Img2pdf

Hướng dẫn how do you find all occurrences of a substring in a string in python? - làm thế nào để bạn tìm thấy tất cả các lần xuất hiện của một chuỗi con trong một chuỗi trong python?

Không có chức năng chuỗi tích hợp đơn giản nào thực hiện những gì bạn đang tìm kiếm, nhưng bạn có thể sử dụng các biểu thức chính quy mạnh mẽ ...

programming python Substring Python

Hướng dẫn how do i change the first letter of a string in python? - làm cách nào để thay đổi ký tự đầu tiên của một chuỗi trong python?

Bài viết này sẽ thảo luận về các cách khác nhau để chỉ thay thế ký tự đầu tiên của một chuỗi trong Python.Mục lụcSử dụng lập chỉ mụcSử dụng thay ...

programming python Python zip Enumerate get index

Hướng dẫn yaml run python script - yaml chạy tập lệnh python

Bài viết này nhằm phác thảo những điều cơ bản của YAML và viết một tập lệnh Python đơn giản đọc chi tiết cấu hình từ tệp YAML.Nội dung chínhYaml là ...

programming python

Bài Viết Liên Quan

Chủ Đề