基础-面向对象编程
1、类:
class[类名]:[代码主体] python中的类名都是以大写字母开头,且采用驼峰命名法。
代码主题是一个叫方法的复合句。方法类似于函数,但有两处区别:一是必须在类的内部定义方法。二是必须接受至少一个参数。按照惯例,方法的第一个参数总是被命名为self。在对象(实例)上调用方法时,python会自动调用方法的对象作为参数传入;可以使用self定义实例变量:属于对象的变量。通过self.[变量名]=[变量值]定义实例变量。通常是在特殊方法__init__(代表初始化)中定义实例变量,创建对象时python会调用该方法。创建对象的过程,也被称作创建类的实例:
class Rectangle: def __init__(self,w,l): self.width=w self.len=l def area(self): return self.width*self.len def change_size(self,w,l): self.width=w self.len=l r1=Rectangle(10,20) print(r1.area()) r1.change_size(20,40) print(r1.area()) ''' 输出结果: ================ RESTART: E:\Program Files\python3.8\study\t1.py =============== 200 800 '''
2、继承:子类可以继承父类的属性和方法,创建子类时,将父类的类名传入子类,即可继承父类的属性;
当子类继承父类的方法时,可以定义一个与继承的方法名称相同的新方法,从而改变继承,称为方法覆盖;
class Shape: def __init__(self,w,l): self.width=w self.len=l def print_size(self): print("{}by{}".format (self.width,self.len)) class Square(Shape): def area(self): return self.width*self.len def print_size(self): print("I am {} by {}".format(self.width,self.len)) a=Square(30,20) a.print_size() ''' 输出结果: ================ RESTART: E:\Program Files\python3.8\study\t1.py =============== I am 30 by 20 '''
3、类变量和实例变量:在类中又2种变量,类变量(class variable)和实例变量(instance variable)。类变量的定义方式和普通变量相同,但必须在类内部定义;实例变量通过语法self.[变量名]=[变量值]定义。类变量可以在不使用全局变量的情况下,在类的所有实例之间共享数据。
class Shape: recs=[] def __init__(self,w,l): self.width=w self.len=l self.recs.append((self.width,self.len)) def print_size(self): print("{}by{}".format (self.width,self.len)) a=Shape(30,20) b=Shape(200,100) c=Shape(3,5) print(Shape.recs) ''' 输出结果: ================ RESTART: E:\Program Files\python3.8\study\t1.py =============== [(30, 20), (200, 100), (3, 5)] '''
4、魔法方法
python中所有的类,均继承自一个叫Object的父类。python在不同情况下会使用从Object中继承的方法,如打印对象时,会调用从Object继承的魔法方法__repr__;
5、is 如果两个对象时相同的对象,关键字is返回True,反之则返回False;还可以使用is关键字检查变量是否为None;