Đây là mã của tôi:
class a[object]:
d='ddd'
def __contains__[self]:
if self.d:return True
b=a[]
print b.contains['d'] # error
print contains[b,'d'] # error
Chris martin
29,8K9 Huy hiệu vàng75 Huy hiệu bạc133 Huy hiệu Đồng9 gold badges75 silver badges133 bronze badges
Hỏi ngày 27 tháng 12 năm 2009 lúc 1:49Dec 27, 2009 at 1:49
Giống như tất cả các phương pháp đặc biệt [với "tên ma thuật" bắt đầu và kết thúc vào __
], __contains__
không có nghĩa là được gọi trực tiếp [ngoại trừ trong các trường hợp rất cụ thể Một phần của hoạt động của các nhà điều hành xây dựng và vận hành. Trong trường hợp của __contains__
, toán tử trong câu hỏi là in
- toán tử "kiểm tra ngăn chặn".not meant to be called directly [except in very specific cases, such as up=calls to the superclass]: rather, such methods are called as part of the operation of built-ins and operators. In the case of __contains__
, the operator in question is in
-- the "containment check" operator.
Với lớp
class a[object]:
d = 'ddd'
def __contains__[self, m]:
if self.d:
return True
b = a[]
>>> 'd' in b
True
0 của bạn khi bạn trình bày nó [ngoại trừ sửa lỗi đánh máy của bạn và sử dụng class a[object]:
d = 'ddd'
def __contains__[self, m]:
if self.d:
return True
b = a[]
>>> 'd' in b
True
1 thay vì ________ 12!-] và class a[object]:
d = 'ddd'
def __contains__[self, m]:
if self.d:
return True
b = a[]
>>> 'd' in b
True
3 làm ví dụ của nó, class a[object]:
d = 'ddd'
def __contains__[self, m]:
if self.d:
return True
b = a[]
>>> 'd' in b
True
4 sẽ in Trả về class a[object]:
d = 'ddd'
def __contains__[self, m]:
if self.d:
return True
b = a[]
>>> 'd' in b
True
1 [vì class a[object]:
d = 'ddd'
def __contains__[self, m]:
if self.d:
return True
b = a[]
>>> 'd' in b
True
9, một chuỗi không trống, là đúng].
Đã trả lời ngày 27 tháng 12 năm 2009 lúc 2:04Dec 27, 2009 at 2:04
Alex Martellialex MartelliAlex Martelli
831K165 Huy hiệu vàng1205 Huy hiệu bạc1385 Huy hiệu Đồng165 gold badges1205 silver badges1385 bronze badges
Để nhận mã của bạn để làm một cái gì đó [mặc dù không có gì hữu ích]:
class a[object]:
d = 'ddd'
def __contains__[self, m]:
if self.d:
return True
b = a[]
>>> 'd' in b
True
Các tài liệu.
Julius
8098 Huy hiệu bạc11 Huy hiệu đồng8 silver badges11 bronze badges
Đã trả lời ngày 27 tháng 12 năm 2009 lúc 1:51Dec 27, 2009 at 1:51
Cobbalcobbalcobbal
69.2K19 Huy hiệu vàng142 Huy hiệu bạc156 Huy hiệu đồng19 gold badges142 silver badges156 bronze badges
Phương thức __contains__
Xác định cách thức hoạt động của lớp khi chúng xuất hiện ở bên phải của toán tử in
và
class Person[object]:
def __init__[self,name,age]:
self.name = name
self.age = age
def __contains__[self,param1]:
return True if param1 in self.__dict__.keys[] else False
>>> p = Person['Robby Krieger',23]
>>> 'name' in p
True
2.class Person[object]:
def __init__[self,name,age]:
self.name = name
self.age = age
def __contains__[self,param1]:
return True if param1 in self.__dict__.keys[] else False
>>> p = Person['Robby Krieger',23]
>>> 'name' in p
True
Azat Ibrakov
9.2159 huy hiệu vàng39 Huy hiệu bạc47 Huy hiệu đồng9 gold badges39 silver badges47 bronze badges
Đã trả lời ngày 1 tháng 1 năm 2013 lúc 9:33Jan 1, 2013 at 9:33
Vijay Shankervijay Shankervijay shanker
2.4081 Huy hiệu vàng21 Huy hiệu bạc37 Huy hiệu đồng1 gold badge21 silver badges37 bronze badges
1
if self.d:return true
class a[object]:
d = 'ddd'
def __contains__[self, m]:
if self.d:
return True
b = a[]
>>> 'd' in b
True
9 là chuỗi class Person[object]:
def __init__[self,name,age]:
self.name = name
self.age = age
def __contains__[self,param1]:
return True if param1 in self.__dict__.keys[] else False
>>> p = Person['Robby Krieger',23]
>>> 'name' in p
True
4. Các chuỗi không trống luôn là sự thật: Khi bạn sử dụng class Person[object]:
def __init__[self,name,age]:
self.name = name
self.age = age
def __contains__[self,param1]:
return True if param1 in self.__dict__.keys[] else False
>>> p = Person['Robby Krieger',23]
>>> 'name' in p
True
5 trên class Person[object]:
def __init__[self,name,age]:
self.name = name
self.age = age
def __contains__[self,param1]:
return True if param1 in self.__dict__.keys[] else False
>>> p = Person['Robby Krieger',23]
>>> 'name' in p
True
4, nó sẽ luôn hành động như thể bạn đã nói class Person[object]:
def __init__[self,name,age]:
self.name = name
self.age = age
def __contains__[self,param1]:
return True if param1 in self.__dict__.keys[] else False
>>> p = Person['Robby Krieger',23]
>>> 'name' in p
True
7.Tôi nghĩ những gì bạn có thể muốn nói là:
def __contains__[self, item]:
return item in self.d
in
là nhà điều hành gọi phương thức __contains__
đằng sau hậu trường.
Đã trả lời ngày 27 tháng 12 năm 2009 lúc 1:56Dec 27, 2009 at 1:56
Bobincebobincebobince
521K103 Huy hiệu vàng648 Huy hiệu bạc827 Huy hiệu Đồng103 gold badges648 silver badges827 bronze badges
Hãy xem một ví dụ rất đơn giản về Phương pháp ma thuật __Contains__:__contains__ :
Giả sử tôi có người chơi lớp và phương thức __init__ của tôi lấy một tên đối số chuỗi. Trong chính tôi đã tạo ra một đối tượng [OBJ1] của người chơi lớp.__init__ method takes one string argument name. In main I have created an object [obj1] of class Player.
Bây giờ nếu tôi muốn biết nếu OBJ1 của tôi [trong trường hợp này, tên thuộc tính của Obj1] có chứa một chuỗi cụ thể, chuỗi con hoặc bảng chữ cái, tôi phải thực hiện phương thức __contains__ như trong ví dụ.obj1 [in this case attribute name of obj1] contains a particular string, substring or an alphabet, I have to implement __contains__ method as shown in the example.
Nếu lớp của tôi có phương thức __Contains__, tôi có thể gọi toán tử tích hợp vào các đối tượng tùy chỉnh của mình như trong ví dụ.__contains__ method I can call built-in operator in on my custom objects as shown in the example.
class Player[]:
def __init__[self, name]:
self.name=name
def __contains__[self, substring]:
if substring in self.name:
return True
else:
return False
obj1=Player["Sam"]
print ['am' in obj1] ----> True
print ['ami' in obj1] ----> False
Đã trả lời ngày 29 tháng 7 năm 2016 lúc 10:00Jul 29, 2016 at 10:00
N Randhawan RandhawaN Randhawa
8.1933 Huy hiệu vàng42 Huy hiệu bạc47 Huy hiệu đồng3 gold badges42 silver badges47 bronze badges