Có hàm nào trong thư viện chuẩn Python để tạo lại lược đồ mang tên mang tên Python với tên thuộc tính "riêng tư" không? Nó có vẻ như sẽ có, nhưng tôi không thể tìm thấy nó cho cuộc sống của tôi.Hàm mangling tên Python
Tôi đã viết điều này, nhưng nếu có cách nào tốt hơn, tôi là tất cả các tai.
def mangle_name (cls, attrname) :
prefix = '_' + cls.__name__.lstrip('_')
if not attrname.startswith('__') :
attrname = '__' + attrname
if not attrname.endswith('__') :
return prefix + attrname
else :
return attrname
class Foo :
__some_such = 3
name = mangle_name(Foo, '__some_such')
print name
print hasattr(Foo(), name)
Tôi chắc chắn rằng không có chức năng như vậy trong thư viện chuẩn. Mày cần nó để làm gì? –
Tôi có thể tưởng tượng điều này hầu như luôn luôn được sử dụng để làm điều gì đó xấu. –
Về cơ bản, tôi cần truy cập động các thuộc tính riêng của lớp tùy ý. Hàm trên hoạt động; Tuy nhiên, có thể có vấn đề với nó mà tôi không biết (một số vấn đề không lường trước được). Vì vậy, sử dụng của người khác có vẻ như là lựa chọn tốt nhất. – rectangletangle