python 函数、类

1、面向对象(oop)面向过程:面向处理,更多的是注重计算每一个步骤面向对象:认为万事万物皆对象,程序是由多个对象协作共同完成的,能更好的直接代码复用和设计复用问题->面向对象分析(OOA)->发现对象->类->用类实例化对象->对象协作完成功能2、类和对象类:具有相同特征和行为的对象的集合对象:具有某些功能和特征的具体事物的抽象,是类的实例...
摘要由CSDN通过智能技术生成
1、面向对象(oop)

面向过程:面向处理,更多的是注重计算每一个步骤

面向对象:认为万事万物皆对象,程序是由多个对象协作共同完成的,能更好的直接代码复用和设计复用

问题->面向对象分析(OOA)->发现对象->类->用类实例化对象->对象协作完成功能
2、类和对象
  • 类:具有相同特征和行为的对象的集合

  • 对象:具有某些功能和特征的具体事物的抽象,是类的实例

  • 类定义必须使用关键字class,类名一般用大驼峰命名规则:每个单词首字母大写,其他小写

    • class MyDog(object): #python3默认继承自object,可以class Mydog:

      ​ 函数体

3、类
class MyDOg(object):
	num = 100    
	#类属性   可以通过类名访问,也可以被对象访问.如果成员属性名和类属性名冲突,优先访问成员属性,成员属性屏蔽类属性.
	
	def __init__(self,name,age,sex)   #构造函数,一般用于完成对象数据成员设置初值或进行其他必要的		self.name = name	 #初始化工作,不会创建对象,如未提供,python会提供一个默认的构造函数   
		#成员属性,描述对象的静态特征,其实就是一个变量,作用域属于类。python中成员属性可以在构造函数中添加。成员属性属于对象,每个对象的成员属性的值都不同。
		self.__age =age # 私有变量  外界不能直接对象.__age调用了,只能通过调用对象的公用方法来访问。
		self.__sex =sex  #私有变量 

	def bark(self):
		print('汪汪')      #成员公有方法,作用域在类内,成员方法的第一个参数必须是self,代表调用当前对象,只有对象可以调用
	def eat(self):
		print('吃骨头')    #成员公有方法  
    
    #定义一个公开方法,间接访问私有变量    外界通过对象.get_age()
    def get_age(self):
    	return self.__age   
    
    #定义一个公开方法,间接设置私有变量   外界通过对象.set_age()
    def set_age(self,age):
    	self.__age =age
    
    
#对于私有属性的访问,使用公开方法间接访问的方法太麻烦,python提供了一种便捷语法,属性装饰器,通过属性装饰器,可以很方便的对私有属性访问,属性装饰器可以把方法属性化
    @property              #外界使用 对象.sex
    def sex(self):
    	return self.__sex
     
    @sex.setter   		#外界使用  对象.sex =sex
    def sex(self,sex)
    	self.sex = sex
    	
    	
    	
   #定义一个成员私有方法(双下划线)   
   	def __sleep(self):     
   		print('这是我的地盘')
   	 #外界通过,对象.__sleep()会报错,该方法为私有方法,只能在当前类中被成员公有方法调用。外界通过公有方法获取
   	
   	#定义一个类方法
   	@classmethod
   	def c1(cls):
   		rerurn('我是类方法')
   	
   #定义一个静态方法
   @staticmethod
   def show():
   		return time.time()
  
    
	
	def __del__(self):   #析构函数,用来释放对象占用的资源,如果未提供,python将会提供一个默认的析构函数进行必要的清理工作。
	def __str__(self):
		return self.name
	def __repr__(self):
		return self.__str__()

#将对象转化为字符串,凡是涉及对象向字符串转化的都会调用(`print,str`),返回值是字符串.
#__repr__作用同__str__,不过是给解释器看的
	
		
		
dog = MyDog('泰迪')  #对象的创建,对象的实例化 ,定义了一个 类 类型的变量
print(dog.__dict__)  #__dict__属性可以查看实例属性
print(dog.__class__) #查看对象的类名

#属性获取
print(dog.name)   #成员属性的调用:对象。成员属性
print(dog.get_age())   #获取私有属性age的值go
dog.set_age(10)        #设置私有属性的值
print(dog.sex)         #用了@property方法后获取属性值
dog.sex = sex			#用了@sex.setter方法后修改属性值


dog.bark()  #成员方法的调用
dog.eat().bark() #成员方法的连贯调用

  • 属性私有化:如果想让类的内部属性不被外界直接访问,可以在这个属性的前面加两个下划线 ,在Python中,如果一个属性的前面出现两个下划线,就表示这个属性只能在当前类中的方法中访问,不能通过对象直接访问,这个变量就被称为私有变量
单下划线:_age    #受保护的,可以访问的,约定俗称,不要使用它
双下划线:__age   #私有的
两边都有双下划线: __age__  #系统内置变量
  • 属性装饰器:对于私有属性的访问,使用公开方法间接访问的方法太麻烦,python提供了一种便捷语法,属性装饰器,通过属性装饰器,可以很方便的对私有属性进访问,属性装饰器可以把方法属性化。

    描述器:描述器在监视特定属性的时候很有用,其只在新式类中起作用,种类至少实现了3个特殊的方法__get__, __set__, __delete__中的一个。
    如果一个对象同时定义了 get() 和 set(),它叫做资料描述器(data descriptor)。仅定义了 get() 的描述器叫非资料描述器
    描述器在属性访问时被自动调用。
    调用优先级:
    资料描述器 -> 实例字典 -> 非资料描述器
    
  • 成员私有方法(属于对象)

    • 如果以对一个方法的名字前面加双下划线__,声明该方法为私有方法,只能在当前类中被成员公有方法调用,在外界不能通过对象调用,这就是私有方法。
  • 类方法

    • 使用了装饰器@classmethod,第一个参数是当前类对象,该参数一般约定为cls,通过它来传递类的属性和方法(不能传实例的属性和方法)
    • 调用:实例和类都可以调用
  • 静态方法

    • 使用装饰器@staticmethod
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值