Python 面向对象,概念和示例,精简篇!

dir函数

使用内置函数dir传入标识符/数据,可以查看对象内的所有属性和方法

def demo():
    pass
demo()
print(dir(demo))

在这里插入图片描述

在这里插入图片描述

利用好dir函数,可以不需要背许多内容

定义类

与C++相同

class 类名:
	def 方法(self,参数列表)
	

方法的定义和之前的 函数 几乎一样

区别在于第一个参数必须是self

哪个对象调用的方法,self就是哪一个对象的引用

class Cat:
    def eat(self):
        print("%s 小猫吃鱼"% self.name)
    def drink(self):
        print("小猫喝水")
a = Cat()
a.name = "Tom"
a.drink()
a.eat()
b = Cat()
b.name = "Jery"
b.eat()

在这里插入图片描述

创建对象

对象变量 = 类名()

提示:在 对象的方法内部,可以直接访问对象的属性

私有属性和私有方法

C++里的private

定义方式:

​ 在定义属性或方法前,在 属性名或方法名前 增加 两个下划线 ,定义的就是 私有属性或私有方法

一般不使用私有方法

class Men:
    def __init__(self, name):
        self.__name = name
        self.age = 20
    
    def demo1(self):
        print(self.__name)
        print(self.age)
        self.__demo2()		#可以在类内调用私有方法
    
    def __demo2(self):
        print("私有方法")

zs = Men("张三")
zs.demo1()				#可以在类内调用私有属性

zs.__demo2()			#不能在外面调用私有方法,所以会报错
print(zs.__name)		#不能在外面调用私有属性,所以会报错	

在这里插入图片描述

初始化方法

相当于C++的构造函数

方法:
	__init__  内置方法
	
举例:
	def __init__(self):
        self.name = "张三"
        .....
     #这种是直接创建对象   
      
     def __init__(self,name, ......):
        self.name = name
        ..... 
     #这种是  a = 类名("张三")

特别的调用

class Gun:
    def __init__(self,model):
        self.model = model
        self.bullet = 0
    def shoot(self):
        print("射击")

class Soldier:
    def __init__(self,name):
        self.name = name
        self.gun = None
ak47 = Gun("AK47")
print(ak47)
xsd = Soldier("许三多")
xsd.gun = ak47				#这里把枪类对象赋值给士兵类的一个变量
xsd.gun.shoot()				#士兵类的变量就可以调用枪类的成员函数	
print(xsd.gun)	

__del__方法(析构函数)

当使用类名() 创建对象时,为对象 分配空间后,自动调用 __init__ 方法

当一个 对象在内存中被销毁 前,会 自动 调用 __del__ 方法

class Cat:
    def __del__(self):
    
a = Cat()
del a		#调用del方法 销毁对象

__str__方法

使用print 输出对象变量,默认情况下会输出这个变量 引用对象是由哪一类创建的对象,和在内存中的地址(十六进制)

如果不想显示这些,可以利用 __str__ 方法

注意:str方法必须返回一个字符串

class Man:
    name = "1"
    def __init__(self,name):
        self.name = name
        print("%s" % self.name)
   
    def __str__(self):			#自动调用
        return "Man[%s]" % self.name		#必须要返回一个字符串
a = Man("张三")
print(a)

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值