python类和对象语法

实例变量

  • 表示每个对象自己的数据。
    定义:对象.变量名
    调用:对象.变量名

  • 首次通过对象赋值为创建,再次赋值为修改。

w01=Wife()
w01.name="建宁"
w01.name="建宁公主"
  • __dict__对象的属性,用于存储自身实例变量的字典。

实例方法

定义:

def 方法名称(self,参数列表):
	方法体

调用:对象地址.实例方法名(参数列表)
注意,不建议通过类名访问实例方法。

  • 至少有一个形参,第一个参数绑定调用这个方法的对象,一般命名为"self"。
  • 无论创建多少对象,方法只有一份,并且被所有对象共享,用于表示对象行为。
  • 实例变量:自己的数据。
  • 实例方法:操作实例变量。

类成员

类变量:表示所有对象共有的数据。
在类中,方法外定义变量。

class 类名:
	变量名=表达式

调用:类名.变量名
注意,不建议通过对象访问类变量
特点:存在优先于对象,随类的加载而创建,只有一份,被所有对象共享。

类方法

定义:

@classmethod
def 方法名称(cls,参数列表):
	方法体

调用:类名.方法名(参数列表)
注意:不建议通过对象访问类方法。

  • 至少有一个形参,第一个形参用于绑定类,一般命名为’cls’
  • 使用@classmethod修饰的目的是调用类方法时可以隐式传递类。
  • 类方法中不能访问实例成员,实例方法中可以访问类成员。类方法用于操作类变量,表示大家的行为。
  • 类变量:大家的数据。
  • 类方法:大家的行为。

静态方法

既不访问实例成员也不访问类成员。通常作为类中独立的工具函数。
定义:

@staticmethod
def 方法名称(参数列表)
	方法体

调用:类名.方法名(参数列表)
注意:不建议通过对象访问静态方法
使用@staticmethod修饰的目的是该方法不需要隐式传参数。

封装

将一些基本数据类型复合成一个自定义类型。向外提供必要的功能,隐藏实现的细节。

例如:

class Wife:
	def __init__(self,name,face_score,age):
		self.name=name
		self.face_score=face_score
		self.age=age

将数据与对数据的操作相关联。代码可读性更高(类是对象的模板)。

私有成员

作用:无需向类外提供的成员,可以通过私有化进行屏蔽。
做法:命名使用双下划线开头。
本质:障眼法,实际也可以访问。
私有成员的名称被修改,可以通过_dict_属性或dir函数查看

属性相关概念

属性@property
公开的实例变量,缺少逻辑验证。私有的实例变量与两个公开的方法相结合,又使调用者的操作略显复杂。而属性可以将两个方法的使用方式像变量一样方便。

定义:

@property
def 属性名(self):
	return self.__属性名
@属性名.setter
def 属性名(self,value):
	self.__属性名=value

调用:
对象.属性名=数据
变量=对象.属性名

说明:通常两个公开的属性(读、写),保护一个私有的变量。
@property负责读取,@属性名.setter 负责写入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值