j***i 发帖数: 1278 | 1 我知道data member 是可以的
不知道member function 怎么加 |
X****r 发帖数: 3557 | 2 一样啊。
class Adder:
def set(self, x):
def add(y):
return x + y
self.add = add
adder = Adder()
adder.add(1) # exception, class Adder has no attribute 'add'
adder.set(2)
adder.add(1) # ==> 3
【在 j***i 的大作中提到】 : 我知道data member 是可以的 : 不知道member function 怎么加
|
X****r 发帖数: 3557 | 3 还是说你问的是如何给一个类本身(而不是某一个具体实例)加方法?
那就更简单了,直接在类对象本身上加就可以了。
【在 X****r 的大作中提到】 : 一样啊。 : class Adder: : def set(self, x): : def add(y): : return x + y : self.add = add : adder = Adder() : adder.add(1) # exception, class Adder has no attribute 'add' : adder.set(2) : adder.add(1) # ==> 3
|
j***i 发帖数: 1278 | 4 就是这个,
比如有个 class c
我要是
class c:
def func():
就成定义一个新的c , 原来的没有了
好像也不能 c.func=f ,不知道怎么龙,
大大在解答下
【在 X****r 的大作中提到】 : 还是说你问的是如何给一个类本身(而不是某一个具体实例)加方法? : 那就更简单了,直接在类对象本身上加就可以了。
|
t*q 发帖数: 104 | 5 c.func = f should work
【在 j***i 的大作中提到】 : 就是这个, : 比如有个 class c : 我要是 : class c: : def func(): : 就成定义一个新的c , 原来的没有了 : 好像也不能 c.func=f ,不知道怎么龙, : 大大在解答下
|
j***i 发帖数: 1278 | 6 恩,我是了下,对的
我还有另外一个问题
如果我想家的是已有的method的一个overload 如何?
class c 有一个method func(int)
我想加一个 func(int,int)的overload 该如何?
【在 t*q 的大作中提到】 : c.func = f should work
|
X****r 发帖数: 3557 | 7 Python不支持method overload。你需要自己判断类型来dispatch。
【在 j***i 的大作中提到】 : 恩,我是了下,对的 : 我还有另外一个问题 : 如果我想家的是已有的method的一个overload 如何? : class c 有一个method func(int) : 我想加一个 func(int,int)的overload 该如何?
|
j*****k 发帖数: 1198 | 8 是不是现在python挺流行呀,怎么大家聊起它来了?
【在 j***i 的大作中提到】 : 我知道data member 是可以的 : 不知道member function 怎么加
|
r****t 发帖数: 10904 | 9 这个不能完全算 dynamic, 毕竟 definition class 的时候就必须 define method 了。如果
只是对实例动态加 method,用
obj.methodname = Types.MethodType(method, obj, obj.__class__)
这个可以用在在 obj 定义以后。 对 class 就直接加。
【在 X****r 的大作中提到】 : 一样啊。 : class Adder: : def set(self, x): : def add(y): : return x + y : self.add = add : adder = Adder() : adder.add(1) # exception, class Adder has no attribute 'add' : adder.set(2) : adder.add(1) # ==> 3
|
r****t 发帖数: 10904 | 10 This goes deep. python authors used to work towards overloading idea
(PEP3124), but later generic function is preferred.
【在 j***i 的大作中提到】 : 恩,我是了下,对的 : 我还有另外一个问题 : 如果我想家的是已有的method的一个overload 如何? : class c 有一个method func(int) : 我想加一个 func(int,int)的overload 该如何?
|