目录
1.两大编程思想
2.类与对象的创建方法
类:类别,是多个类似事物组成的群体的统称,能够帮助我们快速理解和判断失误的性质。
数据类型:不同的数据类型属于不同的类,使用内置函数type()可以查看其数据类型。
对象:100,90等都是int类之下包含的相似的不同各例,这些个例专业术语称为实例或对象。.
python中一切皆对象
① 创建类的语法
class 类名(这里的类名要采用驼峰输入法:
例如:
"""------类的创建方法------"""
class Student: # Student 为类的名称(类名),由一个由或多个单词组成,每个单词的首字母大写,其余小写
pass
print(id(Student)) # 2692481756656
print(type(Student)) # <class 'type'>
print(Student) # <class '__main__.Student'> ## 可以看出,这里的Student是一个类对象
②类的组成
类属性:直接写在类里的变量称为类属性
实例方法:在类里面直接定义
静态方法:使用staticmethod进行修饰
类方法:使用classmethod进行修饰
初始化方法:使用--int--定义
'--------python中的类------------'
# 创建类的语法
class Student: # Student是类名,类名由一个或多个单词组成,每个单词的首字母要大写,其余字母小写
native_pace = '天水' # 直接写在类里的变量称为类属性
########在类之外定义的成为函数,在类之内定义的称为方法
# 初始化方法
def __int__(self, age, name):
self.name = name # self.name成为实例属性,这里进行了一个赋值的操作,将局部变量的name的值赋给实体属性
self.age = age
# 实例方法
def fun(self): # 这里传入的参数为self
print('你在干什么?')
# 静态方法(使用staticmethod修饰称为静态方法)
@staticmethod
def method(): # 这里面是不允许有参数的
print('使用staticmethod修饰,所以是静态方法')
# 类方法(使用classmethod修饰为类方法)
@classmethod
def cm(cls): # 传入的参数为cls
print('使用classmethod修饰为类方法')
③对象的创建
对象的创建又叫做类的实例化
语法为: 实例名=类名()
'--------python中的类------------'
# 创建类的语法
class Student: # Student是类名,类名由一个或多个单词组成,每个单词的首字母要大写,其余字母小写
native_pace = '天水' # 类属性
def __init__(self, name, age):
self.name = name
self.age = age
def fun1(self):
print('你在干什么?')
"# 实例对象"
stu1 = Student('张三', 20) # 创建Student类的对象
"""Student是类对象,根据类对象创建出来的就是实例对象stu1 """
# 这两种代码相同,都是调用Student中的fun1方法
stu1.fun1() # 你在干什么?.. 对象名.方法名()
Student.fun1(stu1) # 你在干什么? 类名.方法名(类的对象)
print(stu1.name, stu1.age) # 张三 20
3.类属性,类方法,静态方法
类属性:类中方法外的变量成为类属性,被该类的所有对象所共享
类方法:使用@classmethod修饰的方法,使用类名直接访问的方法
静态方法:使用@staticmethod修饰的方法,使用类名直接访问的方法
class Student: # Student 为类的名称(类名),由一个由或多个单词组成,每个单词的首字母大写,其余小写
native_pace = '天水' # 直接写在类里的变量,称为类属性
@classmethod
def cm(cls):
print('类方法通过使用@classmethod修饰的,有默认参数cls')
@ staticmethod
def method():
print('静态方法是通过使用staticmethod修饰的,静态方法是没有默认参数的')
def __init__(self,name,age):
self.name = name
self.age = age
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(Student.native_pace) # 秦州
print('------------------------------------------------------')
'''###类方法的使用###'''
# 类方法的使用方式是通过类名调用的,调用的时候虽然定义的有参数self,但调用不用填
Student.cm()
print('------------------------------------------------------')
'''####类方法的使用####'''
Student.method()
# 静态方法的使用方法也是通过类名调用的
# print(id(Student)) # 2692481756656
# print(type(Student)) # <class 'type'>
# print(Student) # <class '__main__.Student'> ## 可以看出,这里的Student是一个类对象
#
4.动态绑定属性和方法
python是动态语言,在创建对象之后,可以动态地绑定属性和方法
'------动态绑定属性和方法-------'
class Student:
def __init__(self, name, age): # 定义初始化方法
self.name = name # 将局部变量的值赋给实例变量
self.age = age
def fun1(self): # 定义fun1方法
print(self.name+'在吃饭')
stu1 = Student('张三', 20) # 是Student的实例对象
stu2 = Student('李四', 30) # 是Student的实例对象
# 一个Student类可以创建N多个Student类的实例对象,每个实例对象的属性值可以相同也可以不相同。
# 例如给Stu2添加一个性别
stu2.gender = '女'
print(stu2.name, stu2.age, stu2.gender)
# print(stu1.name, stu1.age, stu1.gender) # 这里会报错,因为只有stu2具有gender属性
"""
这里的stu1和stu2都能够使用fun1()方法
"""
stu1.fun1()
stu2.fun1()
## 定义在类之外
def show():
print('这是定义在类之外的称为函数')
stu2.show = show # 将定义的函数绑定在stu2上,原先是show函数,绑定之后就是show方法
stu2.show()