编程语言分为 面向过程 和 面向对象 两种
面向过程 | 面向对象 | |
区别 | 事务比较简单,可以用线性的思维去解决 | 事务比较复杂,使用简单的线性思维无法解决 |
共同点 | 面向过程和面向对象都是解决实际问题的一种思维方式 | |
二者相辅相成,并不是对立的 解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间的复杂关系,方便我们分析整个系统:具体到微观操作,仍然使用面向过程方式来处理 |
类是多个类似事物组成的群体的统称。能够帮助我们快速理解和判断事物的性质,不同的 数据类型 属于不同的 类 。int类之下包含相似的不同个例,这个个例专业属于就是 实例 或 对象。python中的一切皆对象。
pythonprint(type(25)) # <class 'int'> 这些都属于int类,类里面的数值25,97,356这些称为对象或者实例
print(type(97)) # <class 'int'>
print(type(356)) # <class 'int'>
类是由 类属性 、 实例方法 、 静态方法 、 类方法 组成。
pythonclass Student: # Student为类的名称(类名),由一个单词或多个单词组成,规范:每个单词的首字母大写,其余的小写,
native_pace='北京' # 直接写在类里的变量,称为类属性。
def __init__(self,name,age): # 初始化方法 也叫 构造方法
self.name=name # self.name称为实例属性,进行了赋值操作,将局部变量的name的值赋值给实例属性
self.age=age
def info(self): # 实例方法 在类之外定义的称为函数,在类之内定义的称为方法
print('我叫',self.name,'年龄是',self.age)
@staticmethod # 静态方法
def method(): # 在静态方法里不允许使用self
print('我使用了@staticmethod修饰,所以我是静态方法')
@classmethod # 类方法
def cm(cls):
print('我是类方法,因为我使用了classmethod进行修饰')
print(id(Student)) # 类对象 这个是Student类的地址
print(type(Student))
print(Student)
对象的创建又称为类的实例化,有了实例,就可以调用类中的内容。语法是 实例名=类名()
。
python# 上面已经创建好Student类,现在创建Student类的对象
stu1=Student('张三',23)
print(id(stu1)) # 实例对象 这个是Student类型的对象的地址
print(type(stu1))
print(stu1) # 输出对象值的时候,实际输出的是对象的十六进制的内存地址
stu1.info() # 第一种调用方式:对象名.方法名()
print(stu1.name) # 可以调用实例属性
print(stu1.age)
Student.info(stu1) # 第二种调用方式:类名.方法名(类的对象) 类的对象就是方法定义处的self
类属性:类中方法外的变量称为属性,被该类的所有对象所共享。
pythonprint(Student.native_pace)
stu1=Student('张三',29)
stu2=Student('李四',23)
print(stu1.native_pace)
print(stu2.native_pace)
Student.native_pace='天津' # native_pace属性是被stu1和stu2共享的
print(stu1.native_pace)
print(stu2.native_pace)
类方法:使用 @calssmethod
修饰的方法,使用类名直接访问的方法。
pythonStudent.cm()
静态方法:使用 @staticmethod
修饰的方法,使用类名直接访问的方法。
pythonStudent.method()
Python是动态语言,在创建对象之后,可以动态地绑定属性和方法
pythonclass Student:
def __init__(self,name,age): # name和age是所有Student类对象都可以使用的
self.name=name
self.age=age
def eat(self):
print(self.name+'在吃饭')
stu1=Student('张三',23) # 创建Student类对象
stu2=Student('李四',30)
stu2.gender='男' # 给stu2动态绑定gender属性,只适用于当前绑定的属性
print(stu1.name,stu1.age)
print(stu2.name,stu2.age,stu2.gender)
stu1.eat()
stu2.eat()
def show():
print('定义类之外的称为函数')
stu1.show=show() # 动态绑定方法
stu1.show
# stu2.show # 因为sut2没有绑定show方法,所以会报错
本文作者:柯南
本文链接:
版权声明:©2023 柯南 All rights reserved.