类的创建
class Car(object):
#类体
pass
object
类是python中的基类,所有类都继承于此类
- pass只是为了维持结构完整的占位符
创建对象
car = Car()
类的成员
- 成员变量(实例变量,类变量)
- 构造方法
__init__()
:用来初始化实例对象,第一个参数是self
(注意是双下划线,python中双下划线代表私有函数) - 成员方法(实例方法,类方法)
- 属性
构造方法
class Dog:
def __init__(self,name,age):
self.name=name
self.age=age
d=Dog('球球',2)
print('狗狗的名字叫{0},{1}岁了'.format(d.name, d.age))
self 代表类的实例,self 在定义类的方法时是必须有的,但调用时不必传入相应的参数。
实例方法
class Dog:
def __init__(self,name,age):
self.name=name
self.age=age
def run(self):# 实例方法
print('{}正在跑'.format(self.name))
def __run2(self):#私有方法,只能在类内调用
print('{}正在跑'.format(self.name))
d=Dog('球球',2)
print('狗狗的名字叫{0},{1}岁了'.format(d.name, d.age))
d.run()# 实例方法的调用
类变量
- 成员变量由对象访问,类变量由类直接访问
- 类变量是属于类的变量,不属于单个对象
- 私有的实例变量和类变量只能在类内部访问
class Account:
rate = 0.0568
__rate2 = 0.0668# 私有类变量
def __init__(self,owner,amount,date):
self.owner=owner
self.amount=amount
self.__date=date# 私有实例变量
account=Account('球球',1000)
print('账户名为{0}'.format(account.owner))
print('账户金额{0}'.format(account.amount))
print('利率为{0}'.format(Account.rate))
d.run()# 实例方法的调用
类方法
第一个参数不是self
而是类本身
class Account:
rate = 0.0568
def __init__(self,owner,amount):
self.owner=owner
self.amount=amount
@classmethod
def interest_by(cls, amt):
return Account.rate * amt
account=Account('球球',1000)
print('账户名为{0}'.format(account.owner))
print('账户金额{0}'.format(account.amount))
print('利率为{0}'.format(Account.rate))
print('利率为{0}'.format(Account.interest_by(2)))
- 定义类方法需要装饰器,装饰器以@开头,修饰函数、方法和类,用来约束他们
- cls代表类本身
- 使用类名访问
使用属性
成员变量应该被设置为私有,通过set() get()
方法访问
@property
修饰器,代替get函数
class Dog:
def __init__(self,name,age):
self.name=name
self.__age=age
def run(self):# 实例方法
print('{}正在跑'.format(self.name))
def __run2(self):#私有方法,只能在类内调用
print('{}正在跑'.format(self.name))
def get_age(self):
return self.__age
# @property
# def age(self):
# return self.__age
def set_age(self,age):
self.__age=age
d=Dog('球球',2)
print('狗狗的名字叫{0},{1}岁了'.format(d.name, d.get_age()))
d.run()# 实例方法的调用
d.set_age(3)
print('狗狗的名字叫{0},{1}岁了'.format(d.name, d.get_age()))