Python项目-Day14-面向对象

Python项目-Day14-面向对象

  1. 动态添加属性

    • python可以为一个对象添加一个属性,但是并不会影响到同类的其他属性

      class Person:
          pass
      
      p1=Person()
      p2=Person()
      
      p1.gender="male"
      
      #p2的并不会添加gender属性
      
    • 动态为对象绑定方法

      from types import MethodType
      class Person:
          pass
      def displayMe(self):#注意这个绑定的方法一定要有一个参数(self),这个参数指的是对象,与实例方法类似
          print("my genderis:",self.gender)
      #给一个实例绑定的方法,对另一个实例是不起作用的
      
      p1.displayMe=MethodType(displayMe,p1)
      p1.displayMe()
      
    • 通过动态给类增加属性和方法,可以实现所有对象都增加了属性和方法

      ```
          Person.gender='male'
          def displayMe(self):
              print('my genderis:', self.gender)
      
          Person.displayMe=displayMe
      ```
      
    • 使用slots限制实例的属性.比如,只允许对Student实例添加name和age属性。

      class Person(object):
          __slots__=('name','age')
      
      p1=Person()
      print(dir(p1))
      # 这是看到p1对象里已经存在name和age属性了
      try:
          p1.gender = 'female'
      except Exception:
          print('使用__slots__限制实例的属性')
      
  2. 删除属性

        class Person:
                def __init__(self):
                    self.age=1
        p1=Person()
        p2=Person()
        p1.gender='male'
    
        Person.nation='china'
    
        del p1.gender
    
        del p1.nation #error nation属于类的,不可以通过对象删除
    
        del Person.nation
    
        del p1.age #这是可以的
    
  3. 利用函数动态绑定

    #该语句只能添加属性,不能添加方法
    setattr(ee2, 'age', 8) # 添加属性 'age' 值为 8
    getattr(ee1, 'age')     # 返回 'age' 属性的值
    hasattr(ee1, 'age')     # 如果存在 'age' 属性返回 True。
    delattr(ee1, 'age')     # 删除属性 'age'
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你提供一个简单的示例代码,用于实现一个课程表的功能。 ```python class Course: def __init__(self, course_name, course_time): self.course_name = course_name self.course_time = course_time class Schedule: def __init__(self): self.schedule = {} def add_course(self, day, course_name, course_time): if day not in self.schedule: self.schedule[day] = [] self.schedule[day].append(Course(course_name, course_time)) def get_schedule(self): for day, courses in self.schedule.items(): print(day) for course in courses: print("\t", course.course_time, course.course_name) # 示例用法 my_schedule = Schedule() my_schedule.add_course("Monday", "Math", "9:00-10:30") my_schedule.add_course("Monday", "Science", "11:00-12:30") my_schedule.add_course("Tuesday", "English", "10:00-11:30") my_schedule.get_schedule() ``` 这个示例代码中,我们定义了两个类 `Course` 和 `Schedule`。`Course` 类表示一个具体的课程,包括课程名称和上课时间;`Schedule` 类则表示一个课程表,其中包含了每天的课程安排。在 `Schedule` 类中,我们定义了 `add_course` 和 `get_schedule` 两个方法,分别用于添加课程和输出课程表。 在示例中,我们先创建了一个 `Schedule` 对象 `my_schedule`,然后通过 `add_course` 方法添加了几个课程,最后调用 `get_schedule` 方法输出了整个课程表。输出结果如下: ``` Monday 9:00-10:30 Math 11:00-12:30 Science Tuesday 10:00-11:30 English ``` 你可以根据自己的需要修改这个示例代码,添加更多的功能和属性,来实现一个更完整的课程表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值