python基础篇-面向对象

定义一个类

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
点赞14 分享