码迷,mamicode.com
首页 > 编程语言 > 详细

python 函数进阶class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise V

时间:2017-04-28 00:19:45      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:sel   port   方法   method   ram   imp   func   参数   return   

1、类和实例 #类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。

#__init__ 方法 ,其第一个参数永远是self,print_score也是方法。 name score 属性

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score

  def print_score(self):
        print(‘%s: %s‘ % (self.name, self.score))

#如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问

class Student(object):

    def __init__(self, name, score):
        self.__name = name
        self.__score = score

    def print_score(self):
        print(‘%s: %s‘ % (self.__name, self.__score))

#实例属性和类属性给实例绑定那个属性

class Student(object):
    pass

s=Student() s.name=‘Michael‘

给实例绑定方法

def set_age(self, age): # 定义一个函数作为实例方法
      self.age = age

from types import MethodType
s.set_age = MethodType(set_age, s) # 给实例绑定一个方法
s.set_age(25)

给class绑定方法

Student.set_score = set_score

#__slots__

Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该class实例能添加的属性。

__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的。

class Student(object):
    __slots__ = (‘name‘, ‘age‘)

# @property Python内置的@property装饰器就是负责把一个方法变成属性调用的

class Student(object):

    @property
    def score(self):
        return self._score

    @score.setter
    def score(self, value):
        if not isinstance(value, int):
            raise ValueError(‘score must be an integer!‘)
        if value < 0 or value > 100:
            raise ValueError(‘score must between 0 ~ 100!‘)
        self._score = value

#定制类 枚举类 元类

python 函数进阶class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise V

标签:sel   port   方法   method   ram   imp   func   参数   return   

原文地址:http://www.cnblogs.com/emma-zhu/p/6777924.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!