MyException - 我的异常网
当前位置:我的异常网» Perl/Python » Python类跟人类

Python类跟人类

www.MyException.Cn  网友分享于:2013-08-11  浏览:0次
Python类和人类

Python中的类

    俗话说,物以类聚,人以群分,类是什么,类就是一组相同属性的集合。下面来结合人,探讨Python中类和人类的关系。

    首先,我们定义一个人的类,如下:

class People(object):
    '''创建人类'''

    def __init__(self,name,age,sex,blood_type):
        """人具有姓名,年龄,性别,血型的属性"""
        self.name = name
        self.age = age
        self.sex = sex
        self.blood_type = blood_type
        
    def walk(self):
        '''创建走路方法'''
        print("%s can walk!!!!" %self.name)
        
    def speak(self):
        """创建说话的属性"""
        print("%s can speak!!" %self.name)
        
    def learn(self):
        '''创建学习的属性'''
        print("%s is learning." %self.name)


p1 = People("wupeiqi",18,"","0")
p2 = People("Alex",8,"","AB")

    上面代码中,我们定义了一个人的类,人都有姓名,年龄,性别,血型等属性,还有说话,学习,走路等方法;并且我们创建了两个人,一男一女,"Wupeiqi"和"Alex",下面我们来一步一步完善这两个人。

    我们知道,男人有喉结,女人会生小孩,这两个是男,女的区别,也是各自独有的属性。那么给"wupeiqi"和"Alex"添加这种属性。如下:

class People(object):
    '''创建人类'''

    def __init__(self,name,age,sex,blood_type):
        """人具有姓名,年龄,性别,血型的属性"""
        self.name = name
        self.age = age
        self.sex = sex
        self.blood_type = blood_type

    def walk(self):
        '''创建走路方法'''
        print("%s can walk!!!!" %self.name)

    def speak(self):
        """创建说话的属性"""
        print("%s can speak!!" %self.name)

    def learn(self):
        '''创建学习的属性'''
        print("%s is learning." %self.name)


p1 = People("wupeiqi",18,"","0")
p2 = People("Alex",8,"","AB")
p1.birth = "Woman can give birth to a baby"    #给女人添加生孩子功能
p2.adam = "Man has Adam's apple"               #给男人添加喉结属性

    我们知道,男人和女人都有学习的功能,我们人类自己有人会说英语,有人会说日语,总之各种各样的语言,这些是个体所具有的属性,比如"wupeiqi"会说日语,"Alex"会说英语,我们来实现一下:

class People(object):
    '''创建人类'''

    def __init__(self,name,age,sex,blood_type):
        """人具有姓名,年龄,性别,血型的属性"""
        self.name = name
        self.age = age
        self.sex = sex
        self.blood_type = blood_type

    def walk(self):
        '''创建走路方法'''
        print("%s can walk!!!!" %self.name)

    def speak(self):
        """创建说话的属性"""
        print("%s can speak!!" %self.name)

    def learn(self):
        '''创建学习的属性'''
        print("%s is learning." %self.name)


p1 = People("wupeiqi",18,"","0")
p2 = People("Alex",8,"","AB")
p1.birth = "Woman can give birth to a baby"    #给女人添加生孩子功能
p2.adam = "Man has Adam's apple"               #给男人添加喉结属性
p1.language1 = "Japanese"
p2.language2 = "English"

print("{0} is can speak {1}".format(p1.name,p1.language1))   #打印wupeiqi说的语言
print("{0} is can speak {1}".format(p2.name,p2.language2))   #打印ALex说的语言
print("%s is can speak %s" %(p1.name,p1.language2))          #看wupeiqi是否会说英语
print("%s is can speak %s" %(p2.name,p2.language1))          #查看Alex是否会说日语   主要是看语言能力能否交叉
运行结果如下:
wupeiqi is can speak Japanese
Alex is can speak English
Traceback (most recent call last):
  File "/home/zhuzhu/第七天/人类.py", line 33, in <module>
    print("%s is can speak %s" %(p1.name,p1.language2))          #看wupeiqi是否会说英语
AttributeError: 'People' object has no attribute 'language2'

    从上面代码可以看出,"wupeiqi"会说日语,但是"Alex"不具有"wupeiqi"的能力。这就像我们人类一样,你具备的能力,别人是不一定具备的,别人具备的能力,你也是不一定有的。类就像人类世界一样。我们可以创建属性,不一样的能力,共有的能力。再比如,我们知道,我们都会说话,但是有些人生病了,或者天生有缺陷,不具备这种能力,我们可以拿走这些能力,如下:

   

class People(object):
    '''创建人类'''

    def __init__(self,name,age,sex,blood_type):
        """人具有姓名,年龄,性别,血型的属性"""
        self.name = name
        self.age = age
        self.sex = sex
        self.blood_type = blood_type

    def walk(self):
        '''创建走路方法'''
        print("%s can walk!!!!" %self.name)

    def speak(self):
        """创建说话的属性"""
        print("%s can speak!!" %self.name)

    def learn(self):
        '''创建学习的属性'''
        print("%s is learning." %self.name)


p1 = People("wupeiqi",18,"","0")
p2 = People("Alex",8,"","AB")
p1.walk()
p2.walk()
运行如下:
wupeiqi can walk!!!!
Alex can walk!!!!

    上面代码中,我们可以看出,本来Alex和wupeiqi都会跑,现在突然出现一点小情况,Alex不会跑了(当然这只是假设),如下:

class People(object):
    '''创建人类'''

    def __init__(self,name,age,sex,blood_type):
        """人具有姓名,年龄,性别,血型的属性"""
        self.name = name
        self.age = age
        self.sex = sex
        self.blood_type = blood_type

    def walk(self):
        '''创建走路方法'''
        print("%s can walk!!!!" %self.name)

    def speak(self):
        """创建说话的属性"""
        print("%s can speak!!" %self.name)

    def learn(self):
        '''创建学习的属性'''
        print("%s is learning." %self.name)


p1 = People("wupeiqi",18,"","0")
p2 = People("Alex",8,"","AB")
print(People.walk,"     ",p1.walk)
p1.walk()
p2.walk()

del People.walk

# try:
#     delattr(p2,"walk")
# except AttributeError:
#     print("方法不能删除吗!!!!?")

p1.walk()
p2.walk()
运行结果如下:
wupeiqi can walk!!!!
Alex can walk!!!!
Traceback (most recent call last):
  File "/home/zhuzhu/第七天/人类.py", line 37, in <module>
    p1.walk()
AttributeError: 'People' object has no attribute 'walk'

    从上面代码可以看出,创建的实例是不能删除类中的方法的,类中的方法不支持删除,下面来看看对类中的属性进行操作:

    我们让"wupeiqi"成为无名氏,如下:

class People(object):
    '''创建人类'''

    def __init__(self,name,age,sex,blood_type):
        """人具有姓名,年龄,性别,血型的属性"""
        self.name = name
        self.age = age
        self.sex = sex
        self.blood_type = blood_type

    def walk(self):
        '''创建走路方法'''
        print("%s can walk!!!!" %self.name)

    def speak(self):
        """创建说话的属性"""
        print("%s can speak!!" %self.name)

    def learn(self):
        '''创建学习的属性'''
        print("%s is learning." %self.name)


p1 = People("wupeiqi",18,"","0")
p2 = People("Alex",8,"","AB")
print(p1.name,p2.name)

del p1.name
print(p1.name,p2.name)
运行结果如下:
wupeiqi Alex
Traceback (most recent call last):
  File "/home/zhuzhu/第七天/人类.py", line 29, in <module>
    print(p1.name,p2.name)
AttributeError: 'People' object has no attribute 'name'

    从上面运行结果可以看出,我们删除了类中的属性,即属性是可以修改和删除的,我们让"wupeiqi"成为了无名氏,不在具有名字了。

    从上面可以看出,类中,我们只能修改和删除类的属性,不能删除类的方法。

    类和人类是一样的,都是封装一个大致的属性,可以创建无数个个体,每个个体都有自己独特的属性,我们可以通过添加属性进行添加,也会有很多不同的技能和方法。我们都能够实现类中个体实例的完善。

    就如我们人类自己一样,我们缺少某个属性,我们可以通过自己的努力去获取。

    类就是对现实生活世界的描述。

class People(object):
    '''创建人类'''

    def __init__(self,name,age,sex,blood_type):
        """人具有姓名,年龄,性别,血型的属性"""
        self.name = name
        self.age = age
        self.sex = sex
        self.blood_type = blood_type


    def write(self,write_abality=False):
        '''创建写作的能力,不是每个人都具有写作的功能,所以需要进行判断'''
        if write_abality == False:
            print("Sorry,%s is a illiteracy,so %s cann't have the ability of writing!" %(self.name,self.name))
        elif write_abality == True:
            print("%s is a professional in an and literature,%s can write!" %(self.name,self.name))
        else:
            print("Sorry,cann't identify the parameter of %s." %write_abality)

    def walk(self):
        print("%s can walking!")


p1 = People("Alex",18,"Female","AB")
p1.write("Alex")

 

    我们知道,有些人会写,有些人不会写,所以我们要进行判断,判断这个人是否具有写这个属性,如果有,就能够写;如果没有,就不具备。因而要加上一个判断。这样就能查看是否具有写的功能。

    现实世界很多东西需要我们去学习,现在对类的掌握还不是很彻底,尤其是不知道如何描述现实世界,这个还需要自己去积累。

 

文章评论

要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
如何成为一名黑客
如何成为一名黑客
我是如何打败拖延症的
我是如何打败拖延症的
 程序员的样子
程序员的样子
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
为什么程序员都是夜猫子
为什么程序员都是夜猫子
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
旅行,写作,编程
旅行,写作,编程
程序员都该阅读的书
程序员都该阅读的书
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
那些争议最大的编程观点
那些争议最大的编程观点
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
中美印日四国程序员比较
中美印日四国程序员比较
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
鲜为人知的编程真相
鲜为人知的编程真相
程序员必看的十大电影
程序员必看的十大电影
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
总结2014中国互联网十大段子
总结2014中国互联网十大段子
一个程序员的时间管理
一个程序员的时间管理
程序员和编码员之间的区别
程序员和编码员之间的区别
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
每天工作4小时的程序员
每天工作4小时的程序员
漫画:程序员的工作
漫画:程序员的工作
编程语言是女人
编程语言是女人
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
10个调试和排错的小建议
10个调试和排错的小建议
程序员应该关注的一些事儿
程序员应该关注的一些事儿
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员的鄙视链
程序员的鄙视链
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
Java程序员必看电影
Java程序员必看电影
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有