python是一门动态语言,不能和C++进行类比,因此创建对象变量时也不太一样。
我先创建了一个类,然后再写类中的方法的时一些参数,候,我创建了一写参数,其中有一个参数叫做self我可以通过这个self调用函数中的参数,从而创建一个对象变量,这个变量属于对象而不属于类
还有一种就是依据类进行创建对象
类与对象
python的类关键字是class,一个最简单的类:
class boy:
def show(self):
pass
属性
python是动态语言,所以他的属性不能和静态java或C++来对比。
class boy:
number = 100 #公有属性 事实上就相当于静态变量,因为你使用 boy.number是可以访问的
创建实例属性有两种方法:
第一种是直接动态添加,先创建一个对象:
a = boy() 然后使用a.number是可以得到100的。想添加一个实例属性,
比如想添加一个age属性,a.age = 100,他就自动添加的了。但是这个实例对象只是属于这个对象的,此时你在创建一个新类b = boy(),b.age是报错的。因为这个age属性只是属于a这个对象。
第二种方法是在构造函数的时候构造一个属性。
def __init__(self,name,age):
self.name = name
self.age = age
self就是相当于调用这个函数本身的对象,就像大家的房子都一样,但是住的人就是不一样的,self就相当于住的人。这样也可以创建对象,但是这样创建的对象就是所有boy的对象都可以访问了,因为这个构造函数在创建对象的时候被调用,就创建了name和age属性 ,所以大家都有了。
python是动态语言,所以他的属性也是动态的。
私有属性
python的私有属性其实就是在名字前加两个_,也就是说,把上面的number改成__number即可。但事实上,python的私有属性其实只是伪私有,其实他只是改了个名字。比如刚刚的__number,在内部,他其实把它名字改成了_类名__属性名,所以你可以通过a._boy__number访问到。
类方法
类的方法有几种:
构造方法:构造方法的名字一定要是__init__,并且传进去一个self,事实上所有的实例方法都要传进去一个self,表示这个对象调用了这个方法。
静态方法:静态方法就不用传递self,用
@staticmethod
修饰即可,类名.方法直接调用。
类方法:没看
实例方法:传递self然后做其他处理即可