我是靠谱客的博主 大意芒果,最近开发中收集的这篇文章主要介绍Python自学第十二天——类与对象,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

作为新手自学Python的第十二天,技术低微,希望可以通过这种方式督促自己学习。

个人学习环境:python3.9,PyCharm 2021.3.2 (Community Edition)

———————————————————————————————————————————

编程两大思想

面向过程:事物简单,可以用线性思维解决

面向对象:事物比较复杂,线性思维可能无法快速解决

共同点:都是解决实际问题的一种思维方式

二者相辅相成并不对立,在解决复杂问题时,面向对象方式便于我们宏观上把握事物之间的复杂关系,方便我们整体分析;微观操作扔需要使用面向过程方式来解决

1、类与对象

1.1 类

类是多个类似事物组成的群体的统称,能够帮助我们快速理解和判断事物的性质。

1.2 数据类型

不同的数据类型属于不同的类

使用内置函数type()查看数据类型

1.3 对象

相同类型下的不同个例,这些个例就是实例或对象

print(type(100))    # <class 'int'>
print(type(99))     # <class 'int'>
# 100、99就是对象,数据类型为int

1.4 类的创建

1.4.1 语法

class Student :

pass

1.4.2 类的组成

类属性、实例方法、静态方法、类方法

class Student:  # Student为类的名称(类名)由一个或多个单词组成,每个单词的首字母大写,其余字母小写
    native_pace = '甘肃'  # # 直接写在类里面的变量成为类属性
​
    def __init__(self, name, age):  # 初始化方法
        self.name = name  # self.name 称为实例属性,此时进行一个赋值操作,将局部变量的name值赋给实例属性
        self.age = age
​
    # 实例方法      类之外定义的为函数,类之内定义的为方法
    def eat(self):
        print('牛肉面!')
​
    # 静态方法,规定不允许写self
    @staticmethod
    def method():
        print('我使用了staticmethod进行修饰,我是静态方法')
​
    # 类方法
    @classmethod
    def cm(cls):
        print("我使用了classmethod进行修饰,我是类方法")

1.5 对象的创建

1.5.1 语法

实例名 = 类名 ()

1.5.2 意义

有了实例,就可以调用类中的内容

# 创建Student类的对象
stu1 = Student('张三', 20)
# print(stu1)     # <__main__.Student object at 0x0000022657301D60> ,此时输出的是类的十六进制内存地址
stu1.eat()          # 对象名.方法名()
print(stu1.name)
print(stu1.age)
​
Student.eat(stu1)   # 类名.方法名(类的对象) 此时类的对象实际上为方法定义处的self
# 与stu1.eat()代码功能相同,均为调用Student中的eat方法

1.6 类属性、类方法、静态方法、实例方法

类属性:类中方法外的变量称为类属性,被该类的所有对象所共享

# 类属性的调用
print(Student.native_pace)
stu1 = Student('张三', 20)
stu2 = Student('李四', 30)
print(stu1.native_pace)
print(stu2.native_pace)
Student.native_pace = '四川'
print(stu1.native_pace)
print(stu2.native_pace)
"""
结果为:
甘肃
甘肃
甘肃
四川
四川
"""

类方法:使用@classmethod修饰的方法,使用类名直接访问的方法。类方法最少包含一个参数,通常命名为cls,Python会自动将累本身绑定给cls参数,即我们在调用类方法时无需显式为cls传递参数。

静态方法:使用@staticmethod修饰的方法,使用类名直接访问的方法。静态方法就是函数。静态方法没有cls、self这样的特殊参数,Python解释器不会对它包含的参数做任何类或对象的绑定,因此类的静态方法中无法调用任何类属性和类方法。

静态方法和函数的区别:

静态方法函数
定义在类空间之内(类命名空间)定义在程序所在的空间之内(全局命名空间)

实例方法:在类中定义的方法默认为实例方法。实例方法最少也要包含一个self参数,用于绑定调用此方法的实例对象。

静态方法只能调用类的静态属性,类方法只能调用类的静态方法和静态属性

实例方法的self指的是实例对象,类方法的self指的是类的元数据(类的自身)

# 类方法的使用
Student.cm()
​
# 静态方法的使用
Student.method()
"""
结果为:
我使用了classmethod进行修饰,我是类方法
我使用了staticmethod进行修饰,我是静态方法
"""

1.7 动态绑定属性和方法

Python在创建对象之后可以动态地绑定属性和方法

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
​
    def eat(self):
        print(self.name+'在吃饭')
​
​
stu1 = Student('张三', 20)
stu2 = Student('李四', 30)
# 为stu2动态绑定性别属性
stu2.gender = '女'
print(stu1.name, stu1.age)
print(stu2.name, stu2.age, stu2.gender)
​
# 为stu1动态绑定方法
stu1.eat()
stu2.eat()
​
​
def show():
    print('定义在类之外的为函数')
​
​
stu1.show = show
stu1.show()

最后

以上就是大意芒果为你收集整理的Python自学第十二天——类与对象的全部内容,希望文章能够帮你解决Python自学第十二天——类与对象所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部