Python(七) 高级部分:面向对象

本文深入讲解面向对象编程的核心概念,包括类与对象的区别、构造函数的使用、类变量与实例变量的区别,以及如何通过继承创建子类。同时,探讨了方法与函数的区别,类方法、静态方法的使用,以及成员可见性和子类方法调用父类方法的方法。
摘要由CSDN通过智能技术生成

一、类的定义

# 面向对象
#有意义的面向对象代码
# 类 =  面向对象
# 类、对象
#实例化
# 类最基本的作用:封装
class Student():
    name = ''
    age = 0

    def print_file(self):
        print('name'+self.name)
        print('name'+str(self.age))

student=Student() #实例化
student.print_file()

 

二、浅谈函数与方法的区别

 

方法 和 函数的区别
方法 :设计层面 
函数:程序运行、过去式的一种称谓

三、类与对象。

类是描述 一类的 行为和特征

对象是具体的描述对象

类像一个模板一样  可以生成许多不同的对象

 

四、构造函数

#类、对象

class Student():
    name = ''
    age = 0

    #行为 与 特征
    def __init__(self):
        #构造函数
        print('student')

    def print_file(self):
        print('name'+self.name)
        print('name'+str(self.age))

s=Student()
s.__init__()

student  #实例化时候 调用了构造函数
student   #单独调用了了构造函数

构造函数不能返回除了None 以外的值

 

 

 

五、区别模块变量与类中的变量

六、类变量与实例变量

类变量:和类相关的变量

实例变量:和对象相关联的变量

class Student():
    name = ''  #类变量
    age = 0

    #行为 与 特征
    #类变量、实例变量
    def __init__(self,name,age):
        #构造函数
        #初始化对象的属性
        self.name=name  #定义实例变量
        self.age=age
        # print('student')

    def print_file(self):
        print('name'+self.name)
        print('name'+str(self.age))

s=Student('大明',20)
print(s.name)  #打印实例变量 需要在类里面保存实例变量
  print(Student.name) #打印类变量
 

大明
''

 

七、类与对象的变量查找顺序

实例名称. __dict__  类中实例变量

 

八、self与实例方法

self 代表的实例 而不是类

 

九、在实例方法中访问实例变量与类变量

class Student():

    name = 'qiyue'  #类变量
    age = 0

    #行为 与 特征
    #类变量、实例变量
    def __init__(self,name,age):
        #构造函数
        #初始化对象的属性
        self.name=name  #定义实例变量
        self.age=age
        print(self.name)
        print(self.__class__.name) #在实例方法中访问类变量
        print(Student.name)
        # print('student')

    def print_file(self):
        print('name'+self.name)
        print('name'+str(self.age))

s=Student('大明',20)

大明  #实例变量
qiyue #访问类变量
qiyue # 类变量

 

十、类方法

class Student():

    sum = 0
    name = 'qiyue'  #类变量
    age = 0

    #行为 与 特征
    #类变量、实例变量
    def __init__(self,name,age):
        #构造函数
        #初始化对象的属性
        self.name=name  #定义实例变量
        self.age=age
        self.__class__.sum +=1
        print('当前学生总数为:'+ str(self.__class__.sum))
        # print('student')

    #实例方法
    def do_homework(self):
        print('do_homework')

    @classmethod  #类方法
    def plus_sum(cls):
        cls.sum +=1
        print(cls.sum)
        

s=Student('大明',20)
Student.plus_sum()


结果:
当前学生总数为:1
2

 

十一、静态方法

和类和对象没有关系  建议不要经常用

    @staticmethod #静态方法
    def add(x,y):
        print('This is 静态方法')

 

十二、成员可见性:公开和私有

 通过方法来改变类中变量的值

public  private python中没有这些关键字

在变量和方法前面加上双下划线 name __name

python 允许 实例化点来添加新的变量

通过 _类名__私有变量

 

十三、没有什么是不能访问

十四、继承.

class Human():
    sum = 0
    def __init__(self,name,age):
        self.name = name  
        self.age = str(age)
        
    def get_name(self):
        print(self.name)


class Student(Human):
    # sum = 0
    def __init__(self,school,name,age):
        self.school = school  
        Human.__init__(self,name,age)
        # self.__score = 0
        # self.__class__.sum +=1
   
    def do_homework(self):
        print('do_homework')

s = Student('学校','拾光',18)
print(s.sum)
print(s.name)
print(s.age)
print(s.get_name())

结果:
0
拾光
18
拾光
None

 

十五、子类方法调用父类方法:super关键字

class Human():
    sum = 0
    def __init__(self,name,age):
        self.name = name  
        self.age = str(age)
        
    def get_name(self):
        print(self.name)


class Student(Human):
    # sum = 0
    def __init__(self,school,name,age):
        self.school = school  
        # Human.__init__(self,name,age)
        super(Student,self).__init__(name,age)
        # self.__score = 0
        # self.__class__.sum +=1
   
    def do_homework(self):
        print('do_homework')

s = Student('学校','拾光',18)
print(s.sum)
print(s.name)
print(s.age)
print(s.get_name())


结果:
0
拾光
18
拾光
None

 

 

 

 

 

转载于:https://www.cnblogs.com/zhangtaotqy/p/9495538.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值