zoukankan      html  css  js  c++  java
  • 面向对象1

    是一个概念就是类

    具体的东西是对象

    狗 类

    李四家的狗 对象

    类的名称:类名

    类的属性:一组数据

    类的方法:允许对进行操作的方法(行为)

    定义一个坦克类

    类名:tank
    属性:重量,材料,速度
    方法:开炮,移动,转弯


    class Cat:
        def __init__(self,name,age):
            self.name=name
            self.age=age
        def eat(self):
            print('猫在吃鱼')
    
        def drink(self):
    
            print('猫在喝水')
        def introduce(self):
            print('%s的年龄是:%d'%(self.name,self.age))
    
    tom=Cat('汤姆',40)
    tom.introduce()
    
    lanmao=Cat('蓝猫',100)
    lanmao.introduce()

    __init__会在创建对象时自动调用,然后返回创建对象的引用给对象
    class Cat:
        def __init__(self,name,age):
            self.name=name
            self.age=age
        def eat(self):
            print('猫在吃鱼')
    
        def drink(self):
            print('猫在喝水')
        def __str__(self):
            return '%s的年龄是:%d'%(self.name,self.age)
        def introduce(self):
            print('%s的年龄是:%d'%(self.name,self.age))
    
    tom=Cat('汤姆',40)
    print(tom)
    
    lanmao=Cat('蓝猫',100)
    print(lanmao)

    __str__打印的是对象的描述信息,必须有return,也就是说打印对象时会自动调用__str__


    对象之间的交互

    定义属性时最好用方法,避免直接设置属性时出错

    class Dog:
        def set_age(self,new_age):
            if new_age>=0 and new_age<=100:
                self.age=new_age
            else:
                self.age=0
    
        def get_age(self):
            return self.age
    dog=Dog()
    dog.set_age(100)
    age=dog.get_age()
    print(age)
    私有方法
    class Dog:
        #私有方法
        def __send_msg(self):
            print('正在发送短信')
        #公有方法
        def send_msg(self,money):
            if money>10000:
                self.__send_msg()#类的内部可以直接调私有方法
            else:
                print('余额不足,请充值')
    
    dog=Dog()
    dog.send_msg(1000)
    # 为了不让别人看到这个方法,因为这个方法比较重要

    __del__方法,当一个对象的引用计数为0时,自动执行__del__方法

    class Dog:
        def __del__(self):
            print('over')
    
    dog1=Dog()
    dog2=dog1
    
    del dog1
    del dog2
    print('======')

    测量一个对象的引用计数的方式,用sys中的getrefcount方法接收一个对象,打印出来的结果比实际的引用要多一个,因为它自己也要接收一个

    import sys
    class T:
        pass
    t=T()
    print(sys.getrefcount(t))
    tt=t
    print(sys.getrefcount(t))

    #2
    #3
  • 相关阅读:
    eclipse中统计代码行数
    vmware ubuntu 最近遇到的一些问题
    Shows how to create and run composites dynamically
    程序员的艺术:排序算法舞蹈
    Apache Mina 网络通信
    OutOfMemoryError汇总
    c++/java/c# 几种编程语言的指针、引用比较
    Silverlight开发工具集合
    web.cong 详解
    ASP.NET中的web.config配置
  • 原文地址:https://www.cnblogs.com/z-x-y/p/10093857.html
Copyright © 2011-2022 走看看