Tôi sẽ thêm phương thức vào
print[aClass.__dict__]
3 tự động ... Tên chức năng cũng sẽ được truyền động.Làm thế nào tôi có thể làm được? Tôi đã thử theo cách này
def decor[*var]:
def onDecorator[aClass]:
class onInstance:
def __init__[self,*args,**kargs]:
setter=var
aClass.setter = self.flam
self.wrapped = aClass[*args,**kargs]
def __getattr__[self,attr]:
return getattr[self.wrapped,attr]
def __setattr__[self,attr,value]:
if attr == 'wrapped':
self.__dict__[attr]=value
else:
setattr[self.wrapped,attr,value]
def flam[self,*args]:
self.__setattr__['dimension',len[args[0]]]
return onInstance
return onDecorator
nhưng nếu tôi làm:
print[aClass.__dict__]
tôi có
'setter':
Thay vì ________ 14: .....
Tôi có lớp học này:
class D:
def __init__[self, data]:
self.data = data
self.dimension = len[self.data]
tôi sẽ gọi:
D.name[]
và quay lại
print[aClass.__dict__]
5 nhưng tôi không biết trước print[aClass.__dict__]
6
Shahjapan
Huy hiệu vàng 13K2222 gold badges70 silver badges101 bronze badges
hỏi ngày 25 tháng 2 năm 2012 lúc 11:50Feb 25, 2012 at 11:50
2
Đây là người trang trí của tôi
def decorator[name]:
def wrapper[K]:
setattr[K, name, eval[name]]
return K
return wrapper
Đây là một phương pháp mẫu
def myfunc[self]:
print "Istance class: ", self
Đây là một lớp học trang trí
@decorator["myfunc"]
class Klass:
pass
Tôi hy vọng điều này hữu ích và những gì bạn cần :]
Đã trả lời ngày 2 tháng 7 năm 2012 lúc 0:20Jul 2, 2012 at 0:20
IcepackicePackIcepack
2502 huy hiệu bạc6 Huy hiệu đồng2 silver badges6 bronze badges
Đây là một giải pháp PY3 đơn giản hóa
class A[object]:
def a[self]:
print['a']
def add_b[cls]:
def b[self]:
print['b']
setattr[cls, 'b', b]
return cls
@add_b
class C[A]:
pass
C[].b[] # 'b'
Đã trả lời ngày 13 tháng 8 năm 2019 lúc 3:33Aug 13, 2019 at 3:33
CityNormancitynormancitynorman
4.5402 Huy hiệu vàng35 Huy hiệu bạc38 Huy hiệu Đồng2 gold badges35 silver badges38 bronze badges
1
def add_method[cls]:
def decorator[func]:
@wraps[func]
def wrapper[*args, **kwargs]:
return func[*args, **kwargs]
setattr[cls, func.__name__, wrapper]
return func
return decorator
Bây giờ bạn có thể sử dụng nó như thế này:
print[aClass.__dict__]
0Chỉ cần nhớ có tham số tự trong một hàm mà bạn muốn thêm vào một lớp.
Đã trả lời ngày 28 tháng 11 năm 2019 lúc 12:38Nov 28, 2019 at 12:38
print[aClass.__dict__]
1Nếu bạn muốn lưu ban đầu ban đầu và thêm giá trị mới vào def initinit and add new value to def init
print[aClass.__dict__]
2Đã trả lời ngày 11 tháng 6 năm 2019 lúc 13:31Jun 11, 2019 at 13:31
Igor Zigor zIgor Z
5515 Huy hiệu bạc7 Huy hiệu Đồng5 silver badges7 bronze badges