Python 类相关知识

Python 类相关知识

类的基本结构

class Student():
    sum = 0 #类变量
    #构造函数 前后都有__双下滑线,不会认为为私有方法
    def __init__(self,name='crj',age=18):
        self.name = name #实例变量
        self.age = age #实例变量

        self.__score = 0 #私有成员名称即为_Student__score
        
        #self.__class__.sum += 1 #类变量 根据类来计数,类似c++ static定义的变量
        self.plus_sum() #类方法 

    #定义一个实例方法 ,self为对象本身
    def do_homework(self):
        print(self.name+' do home work')


    #定义一个类方法 cls代表类本身
    @classmethod
    def plus_sum(cls):
        cls.sum += 1
        print(cls.sum)   

    #定义一个静态方法 无需传入类或者对象相关参数 无法引用实例变量 ,可以引用类变量,很像单纯的函数
    @staticmethod 
    def add(x,y):
        print(Student.sum)
        print('this is a static method')


    def get_score(self):
        return self.__score

    #通过加 __ 双下滑线的方式 可以标准该方法为私有方法
    def marking(self,score):
        if score<0 :
            print('得分小于零,错误')     
            return

        self.__score = score
        print('本次{}考试得分{}'.format(self.name,self.__score))

类的继承

class Person():
    
    def __init__(self,name,age):
        self.name = name
        self.age = age
        self.sum = 0

    def get_name(self):
        print(self.name)

    def do_homework(self):
        print('this is Person homework')

#继承父类Person
class Student(Person):

    def __init__(self ,school ,name ,age):
        self.school = school
        #传递参数给父类 需要主动传递当前这个子类 ,可以采用调用父类__init__的方式
        #Person.__init__(self ,name ,age)
        #建议采用的调用父类方法方式,采用 super 关键字,增加代码的兼容性
        super(Student,self).__init__(name,age)

    #如果子类方法与父类重名,优先调用子类方法
    def do_homework(self):
        print(self.name +' do home work')
        #这里可以用super调用父类的方法
        super().do_homework()


student  = Student('文山中学','小狮子',18)

#可以访问父类成员]
print(student.sum) 
print(student.name)
print(student.age)

#可以访问父类方法
student.get_name()

#可以通过类方法,传递类对象来进行调用,建议采取直接调用
Student.do_homework(student)
student.do_homework()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值