Tôi có một trường boolean trong bảng db mysql.flake8 than phiền về so sánh boolean "==" trong mệnh đề bộ lọc
# table model
class TestCase(Base):
__tablename__ = 'test_cases'
...
obsoleted = Column('obsoleted', Boolean)
Để lấy số liệu của tất cả các trường hợp thử nghiệm phi lỗi thời, mà có thể được thực hiện đơn giản như thế này:
caseNum = session.query(TestCase).filter(TestCase.obsoleted == False).count()
print(caseNum)
đó làm việc tốt, nhưng flake8 báo cáo cảnh báo sau đây:
E712: So sánh với False phải là "nếu cond là False:" hoặc "if not cond:"
Được rồi, tôi nghĩ rằng có ý nghĩa. Vì vậy, thay đổi mã của tôi như thế này:
caseNum = session.query(TestCase).filter(TestCase.obsoleted is False).count()
hoặc
caseNum = session.query(TestCase).filter(not TestCase.obsoleted).count()
Nhưng không ai trong số họ có thể làm việc. Kết quả luôn là 0. Tôi nghĩ rằng mệnh đề bộ lọc không hỗ trợ toán tử "is" hoặc "is not". Liệu ai đó có thể cho tôi biết cách xử lý tình huống này không. Tôi không muốn vô hiệu hóa flake.
[PEP 8] (http://www.python.org/dev/peps/pep-0008/#programming-recommendations) đặc biệt khuyên * chống lại * "nếu cond là False". Tôi ngạc nhiên khi [pep8 tool] (http://pep8.readthedocs.org/en/latest/intro.html) làm ngược lại. –