python 类与对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 类与对象相关的知识,希望对你有一定的参考价值。
类的成员
实例变量
实例变量就是对象个体特有的“数据”。
#定义类
class Dog:
def __init__(self, name, age):
self.name = name #创建和初始化实例变量name
self.age = age #创建和初始化实例变量age
#实例化对象
dog=Dog(‘球球‘,2)
#对实例变量通过 “对象.实例变量” 形式访问
print(‘这是我家的狗,名字是%s, 现在%d岁了!‘%(dog.name,dog.age))
#这里后面不能直接使用name,age
运行效果:
构造方法
_init_()方法就是构造方法,构造方法用来初始化实例变量。
在定义_init_() 方法时,它的第一个参数应该是self,之后的参数用来初始化实例变量。调用构造方法是不需要传入self参数。
例子:
class Dog:
def __init__(self, name, age, sex=‘雌性‘):
self.name = name
self.age = age
self.sex = sex
d1=Dog(‘球球‘,2)
d2=Dog(‘果果‘,1,‘雄性‘)
d3=Dog(‘小白‘,3,‘雄性‘)
print(d1.name,d1.age,‘岁‘,d1.sex)
print(d2.name,d2.age,‘岁‘,d2.sex)
print(d3.name,d3.age,‘岁‘,d3.sex)
运行效果:
实例方法
实例方法和实例变量一样,都是某个实例(或对象)个体的特有方法。
定义实例方法时,它的第一个参数也应该是self,这会将当前实例与该方法绑定起来,这也说明该方法属于实例,在调用方法时不需要传入self,类似于构造方法
例子:
class Dog:
def __init__(self, name, age, sex=‘雌性‘):
self.name = name
self.age = age
self.sex = sex
def run(self): #定义实例方法,只有一个self参数
print(‘小狗{}在跑 。。。‘.format(self.name))
def speak(self, sound): #定义实例方法,第一个参数是self,第二个参数是age,第三个参数是sound
print(‘{}岁的小狗{}在叫着:{}‘.format(self.age, self.name, sound))
dog = Dog(‘球球‘, 2) #创建对象调用构造方法,省略默认值
dog.run() #在调用时采用“对象.实例方法” 形式,不需要传递参数
dog.speak(‘旺! 旺! 旺!‘) #需要传递一个参数sound
运行效果:
类变量
类变量是属于类的变量,不属于单个对象。
代码如下:
class Account:
interest_rate=0.0568 #类变量利率
def __init__(self,owner,amount):
self.owner=owner #创建并初始化实例变量
self.amount=amount
account=Account(‘kk‘,800000.0)
print(‘账户名: %s‘%account.owner)
print(‘账户余额: %s‘%account.amount)
print(‘利率: %s‘%Account.interest_rate) #对类变量通过“类名.类变量” 形式访问
运行结果:
类方法
类方法与类变量类似,属于类,不属于个体实例。在定义类的方法时,它的第一个参数不是self,而是类本身
class Account:
interest_rate=0.0568 #类变量利率
def __init__(self,owner,amount):
self.owner=owner #创建并初始化实例变量
self.amount=amount
#定义类方法需要的装饰器,修饰函数、方法和类,用来约束它们
@classmethod
def interest_by(cls,amt): #cls代表类自身,即Account 类
#cls可以直接使用Account替换,所以cls.interest_rate * amt 表达式可以改为Account.interest_rate * amt
return cls.interest_rate * amt
interest=Account.interest_by(10000.0) #对类方法通过“类名.类变量” 形式访问
print(‘计算利息: %f 元‘%interest)
运行结果:
注意:
类方法可以访问类变量和其他类方法,但不能访问其他实例方法和实例变量。在上面例子中,cls.interest_rate用于访问Account类变量interest_rate。如果在类方法interest_by()中添加访问实例变量的owner语句,则会发生错误。
#类方法
@classmethod
def interest_by(cls, amt): # cls代表类自身,即Account 类
print(cls.owner)
return cls.interest_rate * amt
以上是关于python 类与对象的主要内容,如果未能解决你的问题,请参考以下文章