Note - 2018-02-23 [Python] Descriptor
TIL
594
White

Anh Tran viết ngày 23/02/2018

Descriptor

Cảm ơn tác giả vì bài viết hay và chất lượng về descriptor.
Mình xin copy ví dụ từ bài viết trên.

class NonNegativeDescriptor(object):
    def __init__(self, label):
        self.label = label

    def __get__(self, instance, owner):
        return instance.__dict__.get(self.label)

    def __set__(self, instance, value):
        if value > 0:
            instance.__dict__[self.label] = value
        else:
            raise ValueError("Negative value not allowed: %s" % age)


class Programmer(object):
    age = NonNegativeDescriptor('age')
    salary = NonNegativeDescriptor('salary')
    rating = NonNegativeDescriptor('rating')

    def __init__(self, name, age, salary, rating):
        self.name = name
        self.age = age
        self.salary = salary
        self.rating = rating

>>> programmer = Programmer('programmer', 26, 500, 5)
>>> print programmer.age
>>> programmer.age = 20

Ở trong 2 hàm __set__()__get__()

    def __get__(self, instance, owner):

    def __set__(self, instance, value):

Một descriptor giúp chúng ta có thể thực hiện một số tiền xử lí trước khi trả giá trị về hay gán giá trị mới cho phần tử của một object.
Python nhận ra một descriptor khi nó implement một trong 3 phương thức:
__get__(self, instance, owner)
__set__(self, instance, value)
__del__(self ,instance)

Có 2 biến là instanceowner:
Trong ví dụ trên:

  • instance chính là instance của class chứa các instance của descriptor, chính là programmer
  • owner là class của instance, trong ví dụ trên là Programmer
  • Trong trường hợp gọi Programmer.name/ Programmer.salary/Programmer.rating thì instance sẽ bằng None

SQLAlchemy

Exception Code
https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/constants/ER.py
Duplicate code:
except DBAPIError -> get orig.args[0]
DUP_FIELDNAME = 1060
DUP_KEYNAME = 1061
DUP_ENTRY = 1062

Problem:

How to ignore duplicate exception in bulk_save_objects, SQLAlchemy?

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Anh Tran

5 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
1 0
Coding (コーディング) Từ (Link) này, mình xin tóm tắt lại theo quan điểm cá nhân. Trong SQL tồn tại 3 khái niệm logic : True, False, Unknown(NULL) Xếp...
Anh Tran viết 5 tháng trước
1 0
White
1 2
Tham khảo, tóm tắt từ (Link). Cấu trúc của một email Một email sẽ gồm 3 phần chính: Phần mở đầu (前文ーぜんぶん) : Chào hỏi và tự giới thiệu bản thân...
Anh Tran viết 5 tháng trước
1 2
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 1 tháng trước
0 2
White
19 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết gần 2 năm trước
19 1
White
1 1
Chào mọi người, hôm nay mình viết một bài TIL nhỏ về cách lấy độ phân giải của màn hình hiện tại đang sử dụng. xdpyinfo | grep dimensions Kết quả...
namtx viết 12 tháng trước
1 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
5 bài viết.
0 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!