lớp PHP có thể sử dụng từ khóa "tự" trong một bối cảnh tĩnh, như thế này:Trong Python, làm thế nào để tôi tham khảo một lớp chung một cách tĩnh, giống như từ khóa "tự" của PHP?
<?php
class Test {
public static $myvar = 'a';
public static function t() {
echo self::$myvar; // Generically reference the current class.
echo Test::$myvar; // Same thing, but not generic.
}
}
?>
Rõ ràng là tôi không thể sử dụng "tự" theo cách này bằng Python vì "tự" là không để một lớp học nhưng cho một ví dụ. Vì vậy, có một cách tôi có thể tham khảo các lớp học hiện tại trong một bối cảnh tĩnh trong Python, tương tự như "tự" của PHP?
Tôi đoán những gì tôi đang cố gắng làm thay vì không phải là pythonic. Không chắc chắn mặc dù, tôi mới đến Python. Đây là mã của tôi (sử dụng khung công tác Django):
class Friendship(models.Model):
def addfriend(self, friend):
"""does some stuff"""
@staticmethod # declared "staticmethod", not "classmethod"
def user_addfriend(user, friend): # static version of above method
userf = Friendship(user=user) # creating instance of the current class
userf.addfriend(friend) # calls above method
# later ....
Friendship.user_addfriend(u, f) # works
Mã của tôi hoạt động như mong đợi. Tôi chỉ muốn biết: có một từ khóa tôi có thể sử dụng trên dòng đầu tiên của phương pháp tĩnh thay vì "Tình bạn"?
Bằng cách này nếu tên lớp thay đổi, phương pháp tĩnh sẽ không phải được chỉnh sửa. Vì nó là viết tắt của phương pháp tĩnh sẽ phải được chỉnh sửa nếu tên lớp thay đổi.
khi tôi cố gắng sử dụng tự .__ class__ bên trong một phương pháp tĩnh, tôi nhận được toàn cầu tên 'tự' không được định nghĩa – Eddified
Bạn vẫn đi qua "tự "để phương pháp? Hãy nhớ rằng "tự" là tên thông số, không phải là từ khóa. –
@Được xác định: có thể đã là nhận xét về câu trả lời, không phải là câu hỏi –