滤冽 发表于 2025-10-14 14:35:07

面向对象初级

    面向对象初级:
    1.面向对象三大特征:封装  继承   多态    self含义:  指向实例对象本身,让实例能够访问类中的属性和方法
    2.类和对象的创建:    
类和对象的创建(登录注册功能)class User:
    def __init__(self,name,pwd):
      self.name = name
      self.pwd = pwd

class User_Mannager():
    def __init__(self):
      self.user_list = []#存放User类对象
    def regist(self):
      """
      用户注册
      """
      while True:
            name = input('输入用户名N(退出):')
            if name.upper() == 'N':
                break
            for item in self.user_list:
                if item.name == name:
                  print('用户名已存在,重新输入')
                  flag = True
                  break
            else:
                pwd = input('输入密码:')
                self.user_list.append(User(name,pwd))
                print('注册成功')
                return
            continue
    def Login(self):
      """
      用户登录
      """
      while True:
            name = input('输入用户名:')
            pwd = input('输入密码:')
            for i in self.user_list:
                if i.name == name and i.pwd == pwd:
                  print('登录成功')
                  return
            else:
                print('用户名密码错误')
                continue

    def run(self):
      """
      程序入口
      """
      while True:
            func_dict = {'1':self.Login,'2':self.regist}
            print('界面(N退出):1【登录】2.【注册】')
            num = input('输入:')
            if num.upper() == 'N':
                return
            func = func_dict.get(num)
            if func:
                func()
            else:
                print('输入错误')

if __name__ == "__main__":
    obj = User_Mannager()
    obj.run()属性:对象具有的特征叫属性
    设置和获取对象具有的属性:
      1,静态  类中:  对象.属性=值    
             外部:  设置:obj = Foo(属性的值)
                  获取:对象.属性  
      2,动态(反射):以字符串的形式去设置获取对象属性  类中:对象.属性=值或者pass  
                                外部:setattr:新增此对象的属性及值或者修改此对象已经具有的属性的值    
                                   格式:setattr(对象   ,属性   (字符串形式),值   (任意类型))
                                   getattr:获取对象已经具有的属性的值                
                                   格式:getattr(对象,属性  (字符串形式),默认值(属性不存在时返回,任意类型)
属性的设置和获取(静态和动态)#设置和获取对象的值方法一(静态):
class Foo:
    def __init__(self,n,p):   #给这个类所创建的对象中公有的属性进行值的初始化
      self.name = n
      self.pwd = p
obj = Foo('guohan',123)   #设置对象属性的值(对象属性的值封装到对象中)
print(obj.name)   #获取对象的值
#>>>guohan


#设置和获取对象的值方法二(动态:内置函数):   setattr getattr
class Foo:
    def __init__(self,n,p):   #给这个类所创建的对象中公有的属性进行值的初始化
      self.name = n
      self.pwd = p
obj = Foo(1,1)
n = input('输入用户名:')
p = input('输入密码:')
setattr(obj,'name',n)    #通过内置函数setattr去设置\修改对象的属性
setattr(obj,'pwd',p)
data1 = getattr(obj,'name',0)   #通过内置函数getattr去获取对象中封装的属性的值
data2 = getattr(obj,'pwd',0)
data3 = getattr(obj,'email',0)
print(data1)
print(data2)
print(data3)
#>>>guoahn
#>>>111
#>>>0    3.封装:    同一类的方法封装到同一类中    值封装到对象中
            类中的属性和方法:公有(一般都是)  私有(以_开头):类实例化的对象无法直接访问私有成员(属性和方法)
            获取对象中封装的所有值
对象.__dict__以字典形式获取对象的属性和值#获取对象中封装的所有的属性ji
class Foo:
    def __init__(self,name,pwd,eamil):
      self.name = name
      self.pwd =pwd
      self.eamil = eamil
obj = Foo('guohan','123','888')
print(obj.__dict__)
#>>>{'name': 'guohan', 'pwd': '123', 'eamil': '888'}
setattr(obj,'name','gh')
print(obj.__dict__)
#>>>{'name': 'gh', 'pwd': '123', 'eamil': '888'}    4.继承:    搞清楚self是谁由谁创建 调用方法时去self自己的类中去找  
            查找方法顺序:先再自己类中找再去基类找(多个基类则由左至右)  时刻注意self是谁
    5.多态:    对于一个函数而言,Python对于参数的类型不会限制,那么传入参数时就可以是各种类型,在函数中如果有例如:arg.方法,那么就是对于传入类型的一个限制(类型必须有该方法)。
              这就是鸭子模型只要有该方法,就是我们要想的类型
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

茅香馨 发表于 2025-10-23 06:28:23

感谢分享,下载保存了,貌似很强大

井晶灵 发表于 2025-11-13 18:47:29

这个有用。

缑莺韵 发表于 6 天前

过来提前占个楼

曲愍糙 发表于 15 小时前

感谢发布原创作品,程序园因你更精彩
页: [1]
查看完整版本: 面向对象初级