两大编程思想
类和对象的创建
1、类
(1)类别,分门别类,物以类聚,人类,鸟类,动物类,植物类
(2)类是多个类似事物组成的群体的统称,能够帮助我们快速理解和判断事物的性质
2、数据类型
(1)不同的数据类型属于不同的类
(2)使用内置函数查看数据类型
print(type(100))
3、对象
100,99,520,都是int类之下包含的相似的不同个例,这个个例专业术语称为实例或对象
4、一切皆对象
5、类的创建
(1)创建类的语法
class student:
pass
(2)类的组成
类属性
实例方法
静态方法
类方法
#坚持好好学习
class Student:#student 是类名,是由一个或多个组成,第一个首字母大写,其余小写,这是规范
native_pace ='开封'#类属性,直接写在类里面的变量
def __init__(self,name,age):
self.name=name #name,self称为实例属性,进行了赋值的操作,将局部变量name的值赋给实例属性
self.age=age
#实例方法
def eat(self):#类之外定义的称为函数,类之内定义的称为方法
print('哈哈谢谢')
#静态方法
@staticmethod #@staticmethod进行修饰,所以是静态方法
def method():
print('静态方法')
#类方法
@classmethod
def cm(cls):
print('类方法')#@classmethod进行修饰
类对象与类属性
类的创建
1、对象的创建又称为类的实例化
2、语法:
实例名=类名()
3、意义:有了实例,就可以调用类中的内容
#创建Student类的对象
stu1=Student('张三',20)
print(id(stu1))#1521773837352
print(type(stu1))#<class 'type'>
print(stu1)#<__main__.Student object at 0x000001F399B512E8>
stu1.eat()#对象名.方法
print(stu1.name)
print(stu1.age)
#类名.方法-->实际上就是方法定义处的self
Student.eat(stu1)#与stu1.eat()功能一样
类方法与静态方法
1、类属性:类中方法外的变量称为类属性,被该类的所有对象所共享
2、类方法:使用@classmethod修饰的方法,使用类名直接访问的方法
3、静态方法:使用@staticmethod修饰的主法,使用类名直接访问的方法
#类属性的使用方式
print('---------类属性的使用方式------------')
#print(Student.native_pace)
stu1=Student('张三',10)
stu2=Student('李四',11)
print(stu1.native_pace)
print(stu2.native_pace)
Student.native_pace='郑州'
print(stu1.native_pace)
print(stu2.native_pace)
print('-----------类方法的使用方式----------------')
Student.cm()
print('------------静态方法的使用方式---------------')
Student.method()
动态绑定属性和方法
python是动态语言,在创建对象之后,可以动态的绑定属性和方法
#坚持好好学习
class Student:
def __init__(self,name,age):#初始化方法
self.name = name
self.age = age
def eat(self):
print(self.name+'吃饭')
#一个Student类可以创建N多个Student类的实例对象,每个实例对象的属性值不同
stu1=Student('张三',10)#stu1是Student类的实例对象
stu2=Student('李四',19)#stu2是Student类的实例对象
#为Stu2动态绑定性别属性
stu2.gender='男'
print(stu1.name,stu1.age)
print(stu2.name,stu2.age,stu2.gender)
print('----------------------')
stu1.eat()
stu2.eat()
def show():
print('定义在类之外的函数')
stu1.show=show()
stu1.show()
#stu2.show()#没有绑定 出错