Discuss / Python / day15-6月15日

day15-6月15日

Topic source

Promethues

#1 Created at ... [Delete] [Delete and Lock User]

# -*- coding: utf-8 -*-

#每日学习day15-2022/6/15

###使用__slots__ 限制绑定的属性名

class Student(object):

    def __init__(self,name):

        self.__name = name

s = Student('angel')

s.ag = 2 # 此时给实例绑定了一个属性,但是age属性只属于这个实例,不适用于其他实例

from types import MethodType

def set_age(self,age):

    self.age = age

s.set_age = MethodType(set_age,s) #同样的,只是给该实例,绑定了一个方法,但对其他实例不起作用

s.set_age(12)

print(s.age)

def get_age(self):

    return self.age

Student.get_age = get_age #如此便是给class绑定了一个方法

print(s.get_age())

class Student1(object):

    def __init__(self,name):

        self.__name = name

    __slots__ = ('__name','age','score') #如此便用tuple限制了类可以有的成员变量

s = Student1('angel')

# s.q = 12 # 无此属性

class boyStudent(Student1):

    pass

b = boyStudent('violet')

print(b._Student1__name)

b.q = 11 #子类则不会集成__slots__的限制,可以在子类中也加上__slots__


  • 1

Reply