定义一个类
class student:#定义了一个学生类
#如果函数在类中,称之为类方法,有的学生在学习,有的学生在玩游戏
def study(self,course_name):
print(f"学生正在学习{course_name}.")
def play(self):
print("学生正在玩游戏")
#当前的stu1是student这个类的对象,是一个具体的实例
'''
学生中有小明,小工,每个人可以当做一个实例或者是对象
'''
sut1 = student()
sut2 = student()
print(sut1) #当前输出的值为这个人具体实例在内存中的地址,是个十六进制的值 <__main__.student object at 0x102855a10>
print(sut2) #当前输出的值为这个人具体实例在内存中的地址,是个十六进制的值 <__main__.student object at 0x102a71250>
print(id(sut1),id(sut2)) #这里输出的是十进制的 4366981904 4370387472
print(hex(id(sut1)),hex(id(sut2))) #这里输出的是十六进制0x104f380d0 0x104f9ad50
#通过对象.方法,去调用类中的方法
sut1.study("正在学习python")#学生正在学习正在学习python.
#需要对当前类进行实例化
#student.study('java') 这样调用会报错 TypeError: student.study() missing 1 required positional argument: 'course_name'
student().study("java")#学生正在学习java.
初始化方法
class student:#定义了一个学生类
def __init__(self,name,age): #初始化方法,给当前对象创建属性
#给当前类添加属性
self.name=name
self.age=age
def study(self,course_name):
#属性使用self进行调用,参数是直接调用
print(f"{self.name}正在学习{course_name}.")
def play(self):
print(f'{self.name}正在玩游戏')
#实例化类
stu1 = student('小王',40)
print(stu1) #<__main__.student object at 0x1030a6390> 这个打印的是对象的地址,如果想打印对象的信息,需要使用打印对象俗称魔术方法
stu2 = student('小李',30)
stu1.study('Python')#小王正在学习Python.
stu2.play()#小李正在玩游戏
打印对象
class student:#定义了一个学生类
def __init__(self,name,age): #初始化方法,给当前对象创建属性
#给当前类添加属性
self.name=name
self.age=age
def study(self,course_name):
#属性使用self进行调用,参数是直接调用
print(f"{self.name}正在学习{course_name}.")
def play(self):
print(f'{self.name}正在玩游戏')
#打印对象 使用类中的内置魔术方法来实现
def __repr__(self):#这是格式必须这样写
return f"{self.name}: {self.age}"
#实例化类
stu1 = student('小王',40)
print(stu1) #小王: 40 这就把对象打印出来了
stu2 = student('小李',30)
stu1.study('Python')#小王正在学习Python.
stu2.play()#小李正在玩游戏
可见性和属性装饰器
class student:#定义了一个学生类
def __init__(self,name,age): #初始化方法,给当前对象创建属性
#给当前类添加属性,__表示创建私有属性
self.__name = name
self.__age = age
def study(self,course_name):
#属性使用self进行调用,参数是直接调用
print(f"{self.__name}正在学习{course_name}.")
#实例化类
stu = student("王同学",30)
stu.study('Python')#王同学正在学习Python.这是正常输出
#print(stu.__name)#AttributeError: 'student' object has no attribute '__name'
print(stu._student__name) #王同学 这样就可以打印name了
装饰器
class student:#定义了一个学生类
def __init__(self,name,age): #初始化方法,给当前对象创建属性
#给当前类添加属性,__表示创建私有属性
self.__name = name
self.__age = age
#获取私有属性
@property
def name(self):
return self.__name
#修改私有属性
@name.setter
def name(self,name):
self.__name = name or "无名氏" #如果没有传名字,就显示无名氏
def study(self,course_name):
#属性使用self进行调用,参数是直接调用
print(f"{self.__name}正在学习{course_name}.")
#实例化类,创建了一个对象
stu = student("王同学",30)
print(stu.name)#王同学
#print(stu.name,stu.age)#这个报错,因为age没有获取私有化
stu.study('Python')#王同学正在学习Python
stu.name = '李同学'
print(stu.name) #李同学
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
