python面向对象总结

创建类

一个类由构造器,属性,方法构成。

类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用。

self代表类的实例,而非类

#创建父类person
class person:
    def __init__(self,n,a):
        self.name = n
        self.age = a
    def func(self):
        print(self.name,self.age)

创建对象

#通过person创建对象p1
p = person("Kitty",18)
p.func()

方法

公有方法

在类中和类外都都测调用的方法.


私有方法

不测被类的外部调用模块,在方法前加个"__"双下划线就是私有方法。

实例方法

由对象调用;至少一个self参数;执行实例方法时,自动将调用该方法的对象赋值给self;
类方法:由类调用; 至少一个cls参数;执行类方法时,自动将调用该方法的类赋值给cls;

1当方法中需要使用类对象(如访问私有类属性)时,定义类方法
2类方法一般和类属性配合使用


静态方法

由类调用;无默认参数;

当方法中既不需要使用实例对象(如实例属性,实例方法),也不需要使用类对象(如类属性、类方法、创建实例等时,定义静态方法

取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗

class MainClass:
    def shilifangfa(self):
        print('这是一个实例方法')
    @classmethod
    def leifangfa(cls):
        print('这是一个类方法')
    @staticmethod
    def jingtaifangfa():
        print('这是一个静态方法')

继承

子类(派生类 DerivedClassName)会继承父类(基类 BaseClassName)的属性和方法。

单继承

#创建继承person的子类student
class student(person):
    #添加新属性
    grade = "" 
    className = ""
    #添加新的构造方法
    def __init__(self,n,a,g,c):
        person.__init__(self,n,a) #调用父类的构造函数
        #对新属性赋值
        self.grade = g
        self.className = c
    #重写父类的方法
    def func(self):
        print(self.name,self.age,self.grade,self.className)

#使用student创建对象
s = student("Kitty",18,"2021级","教育技术学")
s.func()

多继承

Python同样有限的支持多继承形式

#创建父类person
class person:
    def __init__(self,n,a):
        self.name = n
        self.age = a
    def func(self):
        print(self.name,self.age)

#创建子类student,继承父类person
class student(person):
    #添加新属性
    grade = "" 
    className = ""
    #添加新的构造方法
    def __init__(self,n,a,g,c):
        person.__init__(self,n,a) #调用父类的构造函数
        #对新属性赋值
        self.grade = g
        self.className = c
    #重写父类的方法
    def func(self):
        print(self.name,self.age,self.grade,self.className)

#创建类information
class information():
    idNum = 0
    def __init__(self,i):
        self.idNum = i

#创建子类samlep,继承父类student和information
class sample(student,information):
    def __init__(self,n,a,g,c,i):
        student.__init__(self,n,a,g,c) #调用父类student的构造函数
        information.__init__(self,i) #调用父类informaton的构造函数
    #重写父类的方法
    def func(self):
        print(self.name,self.age,self.grade,self.className,self.idNum)

#使用子类sample创建test对象
test = sample("Kitty",18,"2021级","教育技术学",2021010123)
test.func()

super函数

当存在继承关系的时候,有时候需要在子类中调用父类的方法,这时候就需要使用父类的名称进行调用,若父类名称修改,则子类会涉及多处修改,为了避免这种麻烦,Python引入了super()函数。

#创建父类person
class person:
    def __init__(self,n,a):
        self.name = n
        self.age = a
    def func(self):
        print(self.name,self.age)

#创建子类student
class student(person):
    #添加新属性
    grade = "" 
    className = ""
    #添加新的构造方法
    def __init__(self,n,a,g,c):
        super().__init__(n,a) #等价于person.__init__(self,n,a)
        #对新属性赋值
        self.grade = g
        self.className = c
    #重写父类的方法
    def func(self):
        print(self.name,self.age,self.grade,self.className)

#创建对象
s = student("Kitty",18,"2021级","教育技术学")
s.func()   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值