Làm cách nào để tìm ra tên của lớp được sử dụng để tạo một thể hiện của một đối tượng trong Python?
Tôi không chắc liệu tôi có nên sử dụng mô -đun
x.__class__.__name__
7 hay phân tích thuộc tính x.__class__.__name__
8.
Mateen Ulhaq
22.6K16 Huy hiệu vàng86 Huy hiệu bạc128 Huy hiệu đồng16 gold badges86 silver badges128 bronze badges
Đã hỏi ngày 4 tháng 2 năm 2009 lúc 11:37Feb 4, 2009 at 11:37
2
Bạn đã thử thuộc tính
x.__class__.__name__
9 của lớp chưa? IE instance.__class__.__name__
0 sẽ cho bạn tên của lớp, mà tôi nghĩ là những gì bạn muốn.>>> import itertools
>>> x = itertools.count[0]
>>> type[x].__name__
'count'
Nếu bạn vẫn đang sử dụng Python 2, hãy lưu ý rằng phương thức trên chỉ hoạt động với các lớp kiểu mới [trong Python 3+ Tất cả các lớp là các lớp "kiểu mới"]. Mã của bạn có thể sử dụng một số lớp kiểu cũ. Các tác phẩm sau đây cho cả hai:
x.__class__.__name__
Đã trả lời ngày 4 tháng 2 năm 2009 lúc 12:02Feb 4, 2009 at 12:02
Sykorasykorasykora
92.9k11 Huy hiệu vàng62 Huy hiệu bạc71 Huy hiệu đồng11 gold badges62 silver badges71 bronze badges
10
Bạn có muốn tên của lớp dưới dạng chuỗi không?
instance.__class__.__name__
Đã trả lời ngày 4 tháng 2 năm 2009 lúc 12:02Feb 4, 2009 at 12:02
Sykorasykoramthurlin
92.9k11 Huy hiệu vàng62 Huy hiệu bạc71 Huy hiệu đồng4 gold badges37 silver badges46 bronze badges
6
Bạn có muốn tên của lớp dưới dạng chuỗi không?
>>> class A:
... def whoami[self]:
... print[type[self].__name__]
...
>>>
>>> class B[A]:
... pass
...
>>>
>>>
>>> o = B[]
>>> o.whoami[]
'B'
>>>
MthurlinmthurlinFeb 4, 2009 at 11:42
25.5k4 Huy hiệu vàng37 Huy hiệu bạc46 Huy hiệu đồngGHZ
1?3 gold badges24 silver badges26 bronze badgesinstance.__class__.__name__
4
class A:
pass
a = A[]
str[a.__class__]
Đã trả lời ngày 4 tháng 2 năm 2009 lúc 11:42
"{0}.{1}".format[a.__class__.__module__,a.__class__.__name__]
GHZGHZ
3.2053 huy hiệu vàng24 Huy hiệu bạc26 Huy hiệu đồng
Mã mẫu ở trên [khi đầu vào trong trình thông dịch tương tác] sẽ tạo ra
instance.__class__.__name__
2 trái ngược với instance.__class__.__name__
3 được tạo ra nếu thuộc tính x.__class__.__name__
9 được gọi. Chỉ cần chuyển kết quả của instance.__class__.__name__
5 cho hàm tạo instance.__class__.__name__
6, phân tích cú pháp được xử lý cho bạn. Tuy nhiên, bạn cũng có thể sử dụng mã sau nếu bạn muốn một cái gì đó rõ ràng hơn.Jun 9, 2014 at 23:04
Hành vi này có thể thích hợp hơn nếu bạn có các lớp có cùng tên được xác định trong các mô -đun riêng biệt.Jonathan
Mã mẫu được cung cấp ở trên đã được thử nghiệm trong Python 2.7.5.4 silver badges2 bronze badges
0
Đã trả lời ngày 9 tháng 6 năm 2014 lúc 23:04
type[instance].__name__ != instance.__class__.__name__
# if class A is defined like
class A[]:
...
type[instance] == instance.__class__
# if class A is defined like
class A[object]:
...
Example:
Jonathanjonathan
5094 Huy hiệu bạc2 Huy hiệu đồng
Trong Python 2,8 gold badges53 silver badges74 bronze badges
>>> class aclass[object]:
... pass
...
>>> a = aclass[]
>>> type[a]
>>> a.__class__
>>>
>>> type[a].__name__
'aclass'
>>>
>>> a.__class__.__name__
'aclass'
>>>
>>> class bclass[]:
... pass
...
>>> b = bclass[]
>>>
>>> type[b]
>>> b.__class__
>>> type[b].__name__
'instance'
>>>
>>> b.__class__.__name__
'bclass'
>>>
Apr 30, 2013 at 5:50
wjandreaPrasath
25.2k8 Huy hiệu vàng53 Huy hiệu bạc74 Huy hiệu đồng4 silver badges11 bronze badges
1
Đã trả lời ngày 30 tháng 4 năm 2013 lúc 5:50
class A:
@classmethod
def get_classname[cls]:
return cls.__name__
def use_classname[self]:
return self.get_classname[]
Usage::
>>> A.get_classname[]
'A'
>>> a = A[]
>>> a.get_classname[]
'A'
>>> a.use_classname[]
'A'
PrasathprasathSep 13, 2017 at 19:11
0
5654 Huy hiệu bạc11 Huy hiệu đồng
Ngoài ra, bạn có thể sử dụng trình trang trí
instance.__class__.__name__
7:x.__class__.__name__
0Đã trả lời ngày 13 tháng 9 năm 2017 lúc 19:11Feb 21, 2012 at 19:07
Câu hỏi hay.RyanN
Đây là một ví dụ đơn giản dựa trên GHZ có thể giúp ai đó:8 silver badges19 bronze badges
Đã trả lời ngày 21 tháng 2 năm 2012 lúc 19:07
Ryannryann
x.__class__.__name__
17408 Huy hiệu bạc19 Huy hiệu đồng
Ngoài việc lấy thuộc tính
x.__class__.__name__
9 đặc biệt, bạn có thể thấy mình cần tên đủ điều kiện cho một lớp/chức năng nhất định. Điều này được thực hiện bằng cách lấy các loại instance.__class__.__name__
9.Jul 12, 2017 at 15:01
3
Trong hầu hết các trường hợp, những điều này sẽ hoàn toàn giống nhau, nhưng, khi xử lý các lớp/phương pháp lồng nhau này khác nhau trong đầu ra bạn nhận được. Ví dụ:
Example:
x.__class__.__name__
2Vì hướng nội là những gì bạn theo đuổi, điều này luôn luôn là bạn có thể muốn xem xét.qualname
Đã trả lời ngày 12 tháng 7 năm 2017 lúc 15:01Nov 15, 2020 at 10:12
1
Bạn có thể chỉ cần sử dụng
instance.__class__.__name__
9 trong đó viết tắt của tên đủ điều kiện của một chức năng hoặc lớp họcx.__class__.__name__
3Liên kết tài liệu Qualname
instance.__class__.__name__
Đã trả lời ngày 15 tháng 11 năm 2020 lúc 10:12
Để có được phiên bản ClassName:May 21, 2020 at 15:03
v.babakv.babakv.babak
hoặc9 silver badges13 bronze badges
1
cả hai đều giống nhau
x.__class__.__name__
5Đã trả lời ngày 21 tháng 5 năm 2020 lúc 15:03
x.__class__.__name__
67589 Huy hiệu bạc13 Huy hiệu ĐồngSep 18 at 9:33
Trước tiên bạn có thể sử dụng
>>> class A:
... def whoami[self]:
... print[type[self].__name__]
...
>>>
>>> class B[A]:
... pass
...
>>>
>>>
>>> o = B[]
>>> o.whoami[]
'B'
>>>
1 và sau đó instance.__class__.__name__
6 để trích xuất tên lớp từ nó.SupergamerKết quả2 silver badges9 bronze badges