python day6 面向对象

把一个类变成具体的实例化的过程叫做类

实例化:把一个类变成一个具体对象的过程

__init__  构造函数,在实例化时初始化数据

__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

class dog:

    def __init__(self):

        pass

    def res(self,name):
        print("%s miao xingren" % name)
    def bulk(self,age):
        print("%s miao xingren" %age)
a1=dog()
a1.bulk("dddd")
a1.res("dddd")

__del__方法是个析构函数,是用来将实例销毁的函数,做收尾工作,例如关闭数据库等

# #----先去实例里去找,如果没有 再去类里去找
# class Role(object):
#     n=123
#     name="alex"
#     n_list=[]
#     def __init__(self,  role, weapon, life_value=100, money=15000):
#         #self.name = name
#
#         self.role = role
#
#         self.weapon = weapon
#
#         self.__life_value = life_value
#
#         self.money = money
#
#     def shot(self):
#         print("shooting...")
#
#     def got_shot(self):
#         print (type(self.__life_value))
#         self.__life_value -=50
#         print("ah...,I got shot...%s"%self.__life_value)
#
#     def show_status(self):
#         return ("life_val:%s"%self.__life_value)
#
#     def buy_gun(self, gun_name):
#         print("%s has  just bought %s"%(self.name, gun_name) )
#     def __del__(self): #析构函数
#         pass
#        # print("%s 死了"%(self.name))
# r1 = Role(‘police‘, ‘AK47‘) #实例化
# r2 = Role( ‘terrorist‘, ‘B22‘)  #生成一个角色
# r1.buy_gun("AKR1")
# r1.got_shot()
# print(r1.show_status())

#del r1
#子类继承父类的功能
class people:
    def __init__(self,name,age):
        self._NAME=name
        self._AGE=age
    def cry(self):
        print ("%s man "%self._NAME)
    def sleep(self):
        print("%s is sleep"%self._NAME)
class man(people):
    def piao(self):
        print ("%s is piao..."%self._NAME)
        people.sleep(self)
        print("%s is sleep"%self._NAME)
class women(people):
    def shop(self):
        print("%s is shop..."%self._NAME)
M1=man("zhangsan",22)
M1.piao()
M1.sleep()
M2=women("lisi",11)
M2.shop()
# super用法
class people:
    def __init__(self,name,age):
        self._NAME=name
        self._AGE=age
    def cry(self):
        print ("%s man "%self._NAME)
    def sleep(self):
        print("%s is sleep"%self._NAME)
class man(people):
    def __init__(self,name,age,money):
        #people.__init__(self,name,age)
        super(man,self).__init__(name,age) ###一般都用这个
        self.MOENEY=money
        print("%s is money%s"%(self._NAME,self.MOENEY))
    def piao(self):
        print ("%s is piao..."%self._NAME)
        people.sleep(self)
        print("%s is sleep"%self._NAME)
class women(people):
    def shop(self):
        print("%s is shop..."%self._NAME)
M1=man("zhangsan",22,100)
M1.piao()
M1.sleep()
M2=women("lisi",11)
M2.shop()

多态:一种接口 多种形态,多态是接口重用

#-*- coding:utf8 -*-
class school(object):
    def __init__(self,name,adree):
        self._name=name
        self._addree=adree
        self.students=[]
        self.teachers=[]
        self.staffs=[]
    def enroll(self,stu_obj):
        print("为%s同学办理入学手续"%stu_obj._name)
        self.students.append(stu_obj)
    def hire(self,staff_obj):
        self.staffs.append(staff_obj)
        print("为%s  雇佣新员工" % staff_obj._name)
class school_member(object):
    def __init__(self,name,age,sex):
      self._name=name
      self._age=age
      self._sex=sex
    def tell(self):
        print(‘‘‘
            info of is %s
            name:%s
            age:%s
            sex:%s
            salary:%s
            course:%s
            ‘‘‘ % (self._name, self._age, self._sex, self._course, self._salary))
class teacher(school_member):
    def __init__(self,name,age,sex,salary,course):
        super(teacher,self).__init__(name,age,sex)
        self._salary=salary
        self._course=course

    def tell(self):
        print(‘‘‘
        -------info of is %s---------
        name:%s
        age:%s
        sex:%s
        salary:%s
        course:%s

        ‘‘‘%(self._name,self._name,self._age,self._sex,self._course,self._salary))
    def teach (self):
        print("%s is teaching course[%s]"%(self._name,self._course))

class student(school_member):
    def __init__(self,name,age,sex,stu_id,grade):
        super(student,self).__init__(name,age,sex)
        self._stu_id=stu_id
        self._grade=grade
    def tell(self):
        print(‘‘‘
            info of is %s
            name:%s
            age:%s
            sex:%s
            stu_id:%s
            grade:%s
            ‘‘‘ % (self._name,self._name, self._age, self._sex, self._stu_id, self._grade))
    def pay_tuition(self,amount):
        print("%s jiao le $%s"%(self._name,amount))
t1=teacher("tom",20,"MF",777,"LINUX")
t2=teacher("JONSON",20,"F",7707,"PYTHON")
s1=student("zhangsan",20,"M",1001,"LINUX")
s2=student("lisi",20,"M",1002,"python")
SCHOOL=school("老男孩It","沙河")

t2.tell() #显示教师信息
s1.tell() #显示学生信息
s2.pay_tuition(1000)#学生可以教学费
SCHOOL.enroll(s1)#学校为学生注册
SCHOOL.hire(t2)#学校雇佣老师
print(SCHOOL.students)
print(SCHOOL.staffs)
SCHOOL.staffs[0].teach()
for stu in SCHOOL.students:
    stu.pay_tuition(5000)
class Animal:
    def __init__(self, name):  # Constructor of the class

        self.name = name

    def talk(self):
       pass
class Cat(Animal):
    def talk(self):
        print(‘Meow!‘)
class Dog(Animal):
    def talk(self):
        print(‘Woof! Woof!‘)
d1=Cat("zhangsan")
d1.talk()
d2=Dog("lisi")
d2.talk()

#另一种方法
class Animal:
    def __init__(self, name):  # Constructor of the class

        self.name = name

    def talk(self):  # Abstract method, defined by convention only

        #raise NotImplementedError("Subclass must implement abstract method")
       pass
    @staticmethod
    def animal_talk(obj):

        obj.talk()

class Cat(Animal):
    def talk(self):
        print(‘Meow!‘)
class Dog(Animal):
    def talk(self):
        print(‘Woof! Woof!‘)
d1=Cat("zhangsan")
d2=Dog("lisi")
Animal.animal_talk(d1)
Animal.animal_talk(d2)

继承的查找策略(广度优先--python3、深度优先python2)

#-*- coding:utf8 -*-
class A(object):
    def __init__(self):
        print("A")
class B (A):
    def __init__(self):
        print("B")
class C (A):
        pass
    # def __init__(self):
    #     print("C")
class D(B,C):
    pass
    # def __init__(self):
    #
    #     print("D")
obj=D()

#注意:#python3中先D-B-C-A
#python2中先D-B-A-C    
时间: 2024-10-12 16:57:08

python day6 面向对象的相关文章

python Day6 面向对象学习

面向过程 VS 面向对象 编程范式 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式. 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式. 两种最重要的编程范式分别是面向过

My way to Python - Day05 - 面向对象-思维导图

My way to Python - Day05 - 面向对象 思维导图

Python -面向对象(一 基本概念)

一 Python简单介绍 Python是一个可移植的面向对象的脚本语言. Python尽管是一个脚本语言,但也是一个全然面向对象的语言. 由于它设计之初把易用性做为很重要的一个考量标准,所以用起来很简洁,优美(语法很灵活).所以使用Python能够高速地编写出可执行代码.与C/C++相比.Python程序的执行速度比較慢,一门语言既然能够生存下来.就有它自己的原因,Python语言也一样. 当今的计算机处理速度已经很快.对某些任务来说.执行速度并非首要考虑的因素.比方说为了实现数据库訪问的自己主

Python的面向对象3

接下来,我们接着讲Python的面向对象,在上一次的博客中,我们详细介绍了类与对象的属性,今天,我们来详细介绍一下面向对象中的方法! 1.定义实例方法 一个实例的私有属性就是以__开头的属性,无法被外部访问,但是,从类的内部是可以访问的,除了可以定义实例的属性,还可以定义实例的方法. 其实,实例的方法就是在类中定义函数,它的第一个参数永远是self,指向调用该方法的实例本身,其他参数和普通参数一致. get_name()就是一个实例方法,它的第一个参数是self,这个参数不需要显示传入 调用实例

个人理解的python的面向对象

在学习到python的面向对象的时候,发现python的类的的属性是有区分类的属性及对象的属性的,代码示例如下: class test: a = 'test' def test1(self,a): self.a = a def show(self): print(test.a) def show1(self): test.a = 'for test' print(test.a) t = test() t.a = 'zjc' t.test1('zjc')print(t.a) t.show() t.

六、定制数据对象(Python的面向对象) ----- 打包代码与数据

创建Python字典 python字典即为键值对,相当于Java中的map,其创建的两种形式: a = {} # 普通方式 b = dict() # 使用工厂函数 字典的赋值与访问 #创建字典 >>> cleese['Name'] = 'John Cleese' >>> cleese['Occupations'] = ['actor','comedian','writer','film producer'] >>> palin = {'Name':'M

Python 3面向对象编程

这篇是计算机类的优质预售推荐>>>><Python 3面向对象编程> 编辑推荐 本书不是Python 的入门书籍,适合具有Python 基础经验的开发人员阅读.如果你拥有其他面向对象语言的经验,你会更容易理解本书的内容. 内容简介 Python 是一种面向对象的解释型语言,面向对象是其非常重要的特性.本书通过Python 的数据结构.语法.设计模式,从简单到复杂,从初级到高级,一步步通过例子来展示了Python 中面向对象的概念和原则.本书不是Python 的入门书籍,

Python-面向对象(三 元编程)

译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段回复应该加入到Python的官方文档中去.而e-satis同学本人在Stack Overflow中的声望积分也高达6

what&#39;s the python之面向对象

编程分为面向过程和面向对象,首先我们要了解什么是面向对象. 面向对象 面向过程就是我们之前学的内容,主要是函数式,其核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的