这是一个最近邻的代码:
import numpy as np class NearestNeighbor(object): def __init__(self): pass def train(self, X, y): self.Xtr = X self.ytr = y def predict(self, X): num_test = X.shape[0] Ypred = np.zeros(num_test, dtype = self.ytr.dtype) for i in xrange(num_test): distances = np.sum(np.abs(self.Xtr - X[i,:]), axis = 1) min_index = np.argmin(distances) Ypred[i] = self.ytr[min_index] return Ypred
这里self.Xtr是属性(成员变量),整个类中所有的函数都可以调用,因为他是属于类的。
如果去掉self,只有Xtr,这时候就是局部变量,这个只属于train整个函数。
class people: __name = 'jack' 这是类属性。这种没有经过__init__函数的属性,就不需要实例化时输入参数。 __age = 12 def getName(self): return self.__name def getAge(self): return self.__age p = people() 对象进行实例化了 print p.getName(),p.getAge()
class peo: def __init__(self,name,age,sex): self.Name = name self.Age = age self.Sex = sex def speak(self): print "my name" + self.Name def __str__(self): msg='my name is: ' +self.Name+ ","+ "my age is: " + self.Age +','+ "my sex is:" +self.Sex return msg shanghai=peo('shanghai','23','man')