Python的学习(十三):类与对象
-
面向过程
事物比较简单,可以用线性的思维去解决
-
面向对象
事物比较复杂,使用简单的线性思维无法解决
共同点:都是解决实际问题的一种思维方式
两者相辅相成,并不是对立的
解决复杂问题,通过面向对象方式便于我们从宏观把握事物之间复杂的关系,方便我们分析整个系统,具体到围观操作,仍然用面向过程方式来处理。
类与对象
类是多个类似事物组成的群体的统称,能够帮助我们快速理解和判断事物的性质。
类的创建
-
class Student:#Student是类名,由一个或多个单词组成,每个单词首字母大写,其余小写
pass
class Student: native_place = '广东' #初始化方法 def __ init __(self,name,age): self.name = name self.name = age #实例方法 #在类之外定义的称为函数,在类之内定义的称为方法 def eat(self): print('学生在吃饭!') #静态方法 @staticmethod def sm(): print('这是静态方法!') #类方法 @classmethod def cm(cls): print('这是类方法!')
对象的创建
-
对象的创建就是类的实例化
-
语法:实例名 = 类名( )
#创建Student类的实例对象 stu = Student('Jack',20) print(stu.name)#实例属性 print(stu.age)#实例属性 stu.info()#实例方法 stu.eat()#对象名.方法名 Student.eat(stu1)#类名.方法名(类的对象)——实际上就是方法定义处的self #这两行代码一样,只是后者需要传入一个student对象
实例对象中会有一个指针指向类对象!
类属性、类方法、静态方法
类属性
类中方法外的变量称为类属性,被该类的所有对象所共享。
-
使用方式
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修饰的方法,使用类名直接访问的方法
使用方式:
Student.cm()
静态方法
使用@staticmethod修饰的方法,使用类名直接访问的方法
使用方式:
Student.method()
动态绑定属性和方法
python是一门动态语言,在创建对象后,可以动态地绑定属性和方法
- 动态绑定属性
#创建一个类
class Student:
def __inint__(self,age,name):
self.name = name
self.age = age
def eat(self):
print(self.name + '在吃饭')
#创建对象
stu1 = Student('张三',20)
stu2 = Student('李四',30)
print('-------为stu2绑定性别属性-----------')
stu2.gender = '女'
print(stu2.name,stu2.age,stu2.gender)
print('-------为stu1绑定方法-----------')
def show():
print('我是帅哥!')
stu1.show = show#动态绑定方法
stu.show()