# -*- coding: utf-8 -*-
"""
Created on Tue May 14 14:21:54 2019
@author: User
"""
class Human(object):
domain = 'eukarya'
def __init__(self, kingdom='Animalia',phylum='Chordata',
order='Primates',family='Human Being'):
self.kingdom = kingdom
self.phylum=phylum
self.__order = order
self.family = family
def typewrite(self):
print('This is %s typing words!' %self.family)
def add(self, n1, n2):
n = n1 + n2
print(str(n1) + '+' + str(n2) + '+' + str(n))
print('You see! %s can calculate!' %self.family)
@classmethod
def showclassmethodinfo(cls):
print(cls.__name__) #__name__属性,其值为类名
print(dir(cls)) #使用dir列示本类的所有方法
class Female(Human):
def __init__(self,gender='female', age = 18):
super(Female,self).__init__() #
self.gender=gender
@property
def age(self):
return self._age
@age.setter
def age(self, age_value):
if not isinstance(age_value, int):
raise ValueError('年龄必须为整数型')
if age_value < 0:
raise ValueError('年龄必须大于等于0')
if age_value > 150:
raise ValueError('年龄必须小于等于150')
self._age = age_value
def add(self, n1, n2):
'''为子类重新定义add方法'''
n = n1 - n2
print(str(n1) + '-' + str(n2) + '=' + str(n))
print('你看,%s 不能使用加法计算!' %self.gender)
def div(self, n1, n2):
n = n1 / n2
print(str(n1) + '/' + str(n2) + '=' + str(n))
print('你看,%s 能使用除法计算!' %self.gender)
MissLi = Female()
MissLi.age = 15
print(MissLi.age)
MissLi.age = 1500
运行:
15
Traceback (most recent call last):
File "<ipython-input-99-afb61ea29add>", line 1, in <module>
runfile('D:/0python/2.1.5b特性_把方法变成属性.py', wdir='D:/0python')
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
execfile(filename, namespace)
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "D:/0python/2.1.5b特性_把方法变成属性.py", line 64, in <module>
MissLi.age = 1500
File "D:/0python/2.1.5b特性_把方法变成属性.py", line 46, in age
raise ValueError('年龄必须小于等于150')
ValueError: 年龄必须小于等于150