python类
class Student:#Student类名,有一个或多个单词组成,每个单词首字母大写,其余小写
pass
#对象由三部分组成:id(内存空间)、类型(type)、值
#python一切皆对象
#Student类对象
print(id(Student))#2410232461840
print(type(Student))#<class 'type'>
print(Student)#<class '__main__.Student'>
class Student:#Student类名,有一个或多个单词组成,每个单词首字母大写,其余小写
native_pace = '安徽'#类里面的变量为类属性
def __init__(self,name,age):
self.name=name #self.name为实例属性,进行了一个赋值操作,将局部变量得到name的值赋给了实例属性
self.age=age
#实例方法
def eat(self):
print('吃饭了######')
#静态方法
@staticmethod
def method():
print('使用staticmethod进行修饰的是静态方法,不允许写self')
#类方法
@classmethod
def cm(cls):
print('使用classmethod进行修饰为类方法')
#在类之外定义的函数为函数,在类之内定义的函数为方法
def eat1(self):
print('xusadasdasdsa')
#创建Student类的对象
stu1 = Student('da',20)
print(id(stu1))
print(type(stu1))
print(stu1)
"""
1674733436448
<class '__main__.Student'>
<__main__.Student object at 0x00000185EDE43E20>
1674733436448 == 0x00000185EDE43E20
单独输出stu1时得到的时stu1的地址
"""
#调用方法1
stu1 = Student('da',20)
stu1.eat() #对象名.方法名()
print(stu1.name)
print(stu1.age)
print('-------------------------------------------')
#调用方法2
Student.eat(stu1) #stu1.eat()<=等价于=>Student.eat(stu1)
#eat(self)中的self是本身,而stu1 = Student('da',20)使stu1变为Student的对象,也就是self本身
#类名.方法名(类的对象)-->实际上就是方法定义处的self
Student.__init__(stu1,'das',220)
print(stu1.name)
print(stu1.age)
动态绑定属性和方法
class Student:#Student类名,有一个或多个单词组成,每个单词首字母大写,其余小写
def __init__(self,name,age):
self.name=name #self.name为实例属性,进行了一个赋值操作,将局部变量得到name的值赋给了实例属性
self.age=age
#实例方法
def eat(self):
print(self.name+'吃饭了######')
stu1 = Student('张三',20)
stu2 = Student('李四',30)
print('--------------------为stu2动态绑定性别属性-------------------------')
stu1.gender = '女'
print(stu1.name,stu1.age,stu1.gender)
print(stu2.name,stu2.age,stu2.gender)
"""
Traceback (most recent call last):
File "C:\Users\wdy\Desktop\函数\venv\Demo\demo7.py", line 15, in <module>
print(stu2.name,stu2.age,stu2.gender)
AttributeError: 'Student' object has no attribute 'gender'
--------------------为stu1动态绑定性别属性-------------------------
张三 20 女
"""
class Student:#Student类名,有一个或多个单词组成,每个单词首字母大写,其余小写
def __init__(self,name,age):
self.name=name #self.name为实例属性,进行了一个赋值操作,将局部变量得到name的值赋给了实例属性
self.age=age
#实例方法
def eat(self):
print(self.name+'吃饭了######')
print('--------------------为stu1动态绑定函数-------------------------')
def show():
print('定义在类之外的函数')
stu1.show = show
stu1.show()
stu2.show()