概述
作为新手自学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自学第十二天——类与对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复