零基础 学 python开发 (Genius套餐A) 二十八

夜光序言:

 

 

 

 

做一个寡言,却心有一片海的人,不伤人害己,于淡泊中,平和自在 。

 

 

 

 

正文:这一部分很重要~~

 

5.2 类的方法 
5.2.1 目标 


类中除了有属性外还有函数方法,Python 的方法有实例方法、类方法、静态方法之分,

目标是掌握这些方法的使用,编写个人信息类的这些方法~

 

 

 



 
5.2.2 类的方法 
1、实例方法 

 


实例方法就是通过实例对象调用的方法,在类中可以根据需要定义一些方法,定义方法采用 def 关键字,在类中定义的方法至少会有一个参数,一般以名为'self'的变量作为该参数(用其他名称也可以),而且需要作为第一个参数。
 


例 5-2-1:实例方法定义 


 

class Person:
 __name = 'Genius'
 __age = 1111
 def getName(self):
 return self.__name
 def getAge(self):
 return self.__age
p = Person()
print (p.getName(),p.getAge())


结果:
Genius 1111
如果对 self 不好理解的话,可以把它当做 C++中类里面的 this 指针一样理解,就是对象自身的意思,在用某个对象调用该方法时,就将该对象作为第一个参数传递给 self。因此 p.getName()时把 p 传递给 self,执行 return p.__name 得到 name,在 p.getAge()时把 p 传递给 self,执行 return p.__age 得到 age。

 


 

2、类方法

 


在类中可以定义属于类的属性,也可以定义属于类的方法,这种方法要使用@classmethod来修饰,而且第一个参数一般命名为 cls(也可以是别的名称)。

 


 
例 5-2-2:类方法定义 


class Person:
 __name = 'james'
 __age = 12
 @classmethod
 def show(cls):
 print(cls.__name,cls.__age)
Person.show()

 


结果:
james 12
其中 show 就是一个类方法,类方法一般使用类的名称来调用,例如:
Person.show()

在调用时会把 Person 传递给 cls 参数,于是:
 print(cls.__name,cls.__age)
相当于执行:
 print(Person.__name,Person.__age)

 

 



3、静态方法 


静态函数通过@staticmethod 修饰,要访问类的静态函数,可以采用用类名称调用。在调用这类的函数时,不会向函数传递任何参数。

 


例 5-2-3:静态方法定义


 

class Person:
 __name = 'james'
 __age = 12
 @staticmethod
 def display():
 print(Person.__name,Person.__age)
 @classmethod
 def show(cls):
 print(cls.__name,cls.__age)
Person.show()
Person.display()


结果:
james 12
james 12
其中 display 是静态方法,show 是类方法,它们都使用 Person 类名称调用,只是Person.show()时会把 Person 传递给 def show(cls)的参数 cls,但是 Person.display()时不传递任何参数。

 


@classmethod 修饰的函数与@staticmethod 修饰的函数最大的区别是@classmethod 的函数被类名称或者类实例调用时会传递一个类的名称给它的第一个参数,但是@staticmethod 的函数被类名称或者类实例调用时就不会传递任何参数给这个函数。

 


5.2.3 【案例】Person 类的方法 


1、案例描述 
编写个人信息类的实例方法、类方法、静态方法。
 
2、案例分析 
个人信息类 Person 定义实例方法、静态方法、类方法,然后程序分析它们的调用。
 
3、案例代码 
 

class Person:
 name="XXX"
 gender="X"
 age=0
 def instanceShow(self):
 print(self.name,self.gender,self.age)
 @classmethod
 def classShow(cls):
 print(cls.name, cls.gender, cls.age)
 @staticmethod
 def staticShow():
 print(Person.name, Person.gender, Person.age)
p=Person()
p.instanceShow()
Person.classShow()
Person.staticShow()

 


结果:
XXX X 0
XXX X 0
XXX X 0
1、实例方法调用 
实例方法 instanceShow 一般使用对象实例调用,调用时要向实例方法传递实例参数,
例如:
p.instanceShow()
另外也可以用 Person 类名称调用,只是要传递实例对象而已,例如下列的调用中 p 传递给函数的 self 参数:
Person.instanceShow(p)

2、类方法调用 
类方法 classShow 一般采用类的名称调用,调用时要向类方法传递类参数,例如:
Person.classShow()
另外也可以使用实例调用,这个时候 p 的类 Person 会传递给函数的参数 cls:p.classShow()


3、静态方法调用 
静态方法一般采用类的名称调用,调用时不需要向静态方法传递任何参数,例如:
Person.staticShow()
另外也可以使用对象实例调用,因为是调用静态方法,因此没有参数传递给函数:
p.staticShow()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值