基础-面向对象编程

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;

posted @ 2022-11-27 18:17  【小桥流水人家】  阅读(19)  评论(0编辑  收藏  举报