# -*- 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):
__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__
Sign in to make a reply
Promethues
# -*- 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__