Đây là mã của tôi trông như thế nào
class InviteManager[]:
ALREADY_INVITED_MESSAGE = "You are already on our invite list"
INVITE_MESSAGE = "Thank you! we will be in touch soon"
@staticmethod
@missing_input_not_allowed
def invite[email]:
try:
db.session.add[Invite[email]]
db.session.commit[]
except IntegrityError:
return ALREADY_INVITED_MESSAGE
return INVITE_MESSAGE
Khi tôi chạy các bài kiểm tra của mình, tôi thấy
NameError: global name 'INVITE_MESSAGE' is not defined
Làm thế nào tôi có thể truy cập INVITE_MESSAGE
bên trong @staticmethod
?
Hỏi ngày 25 tháng 8 năm 2013 lúc 16:47Aug 25, 2013 at 16:47
Daydreamerdaydreamerdaydreamer
82.7K178 Huy hiệu vàng433 Huy hiệu bạc699 Huy hiệu đồng178 gold badges433 silver badges699 bronze badges
0
Bạn có thể truy cập nó dưới dạng InviteManager.INVITE_MESSAGE
, nhưng giải pháp sạch hơn là thay đổi phương thức tĩnh thành phương thức lớp:
@classmethod
@missing_input_not_allowed
def invite[cls, email]:
return cls.INVITE_MESSAGE
.
Đã trả lời ngày 25 tháng 8 năm 2013 lúc 16:51Aug 25, 2013 at 16:51
3
Try:
class InviteManager[]:
ALREADY_INVITED_MESSAGE = "You are already on our invite list"
INVITE_MESSAGE = "Thank you! we will be in touch soon"
@staticmethod
@missing_input_not_allowed
def invite[email]:
try:
db.session.add[Invite[email]]
db.session.commit[]
except IntegrityError:
return InviteManager.ALREADY_INVITED_MESSAGE
return InviteManager.INVITE_MESSAGE
NameError: global name 'INVITE_MESSAGE' is not defined
0 nằm trong phạm vi của nó là staticmethods.Đã trả lời ngày 25 tháng 8 năm 2013 lúc 16:51Aug 25, 2013 at 16:51
NameError: global name 'INVITE_MESSAGE' is not defined
0 nằm trong phạm vi của nó là staticmethods.Maciej GolMaciej Golmaciej Gol4 gold badges32 silver badges50 bronze badges
14,9K4 Huy hiệu vàng32 Huy hiệu bạc 50 Huy hiệu Đồng
class InviteManager[]:
ALREADY_INVITED_MESSAGE = "You are already on our invite list"
INVITE_MESSAGE = "Thank you! we will be in touch soon"
@classmethod
@missing_input_not_allowed
def invite[cls, email]:
try:
db.session.add[Invite[email]]
db.session.commit[]
except IntegrityError:
return cls.ALREADY_INVITED_MESSAGE
return cls.INVITE_MESSAGE
Chỉ nhận ra, tôi cần
NameError: global name 'INVITE_MESSAGE' is not defined
1
Đã trả lời ngày 25 tháng 8 năm 2013 lúc 16:51Aug 25, 2013 at 16:51
Daydreamerdaydreamerdaydreamer
82.7K178 Huy hiệu vàng433 Huy hiệu bạc699 Huy hiệu đồng178 gold badges433 silver badges699 bronze badges
Bạn có thể truy cập nó dưới dạng InviteManager.INVITE_MESSAGE
, nhưng giải pháp sạch hơn là thay đổi phương thức tĩnh thành phương thức lớp:
Đã trả lời ngày 25 tháng 8 năm 2013 lúc 16:51Aug 25, 2013 at 16:51
NameError: global name 'INVITE_MESSAGE' is not defined
0 nằm trong phạm vi của nó là staticmethods.Maxime LorantMaciej Golmaciej Gol19 gold badges84 silver badges96 bronze badges
14,9K4 Huy hiệu vàng32 Huy hiệu bạc 50 Huy hiệu Đồng
Chỉ nhận ra, tôi cần
NameError: global name 'INVITE_MESSAGE' is not defined
1self keyword as self keyword is used to represent instance of the class or to use instance variables of the class. In fact one use class_name, see below example:Bạn có thể truy cập vào các thuộc tính của bạn với InviteManager.INVITE_MESSAGE
và
NameError: global name 'INVITE_MESSAGE' is not defined
3 mà không thay đổi bất cứ điều gì trong tuyên bố của họ.Apr 7, 2019 at 6:20
Maxime LorantMaxime Lorant
32,8K19 Huy hiệu vàng84 Huy hiệu bạc96 Huy hiệu đồng
return __class__.ALREADY_INVITED_MESSAGE
return __class__.INVITE_MESSAGE
Đơn giản, hiểu khái niệm về các biến/phương thức cấp lớp và các biến/phương thức cấp độ thể hiện.
Mặc dù làm việc với các phương thức tĩnh, bạn sẽ không sử dụng từ khóa tự làm từ khóa tự được sử dụng để biểu diễn thể hiện của lớp hoặc sử dụng các biến thể hiện của lớp. Trong thực tế, một người sử dụng class_name, xem ví dụ bên dưới:Oct 14, 2021 at 1:50
1