|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
类和对象1
类:属性 + 方法
创建类的方法: class Xxx: #python中类名是以大写字母开头
例:class Turtle:
#属性
color = 'red'
weight = 10
legs = 4
#方法
def climb(self):
print('正在爬...')
def run(self):
print('正在跑...')
def bite(self):
print('咬!!')
实例化对象: test = Turtle()
调用方法:test.climb()、test.run()
面向对象的特征:封装、继承、多态
继承:一个新类获得被继承的类的属性和方法
使用方法:class Mylist(list):
执行代码
多态:不同对象对同一方法响应不同的行动
例: class Test1:
def a(self):
print('我是test1')
class Test2:
def a(self):
print('我是test2')
实例化:test1=Test1()
test2=Test2()
调用方法:test1.a()
输出:我是test1
调用方法:test2.a()
输出:我是test2
不同的对象调用相同的方法返回不一样的结果
self:类似于java、C++中的 this,实例化对象是,相当于是实例化的名
例:class Test1:
def a(self):
print('我是test1')
实例化:test1 = Test1()
其中test1相当于是self
魔法方法__init__(self, param1, param2):初始化对象属性,在实例化时便可以设置属性的值,而无需通过调用方法来赋予对象数据
例1:class Ball:
def setName(self, name):
self.name = name
def kick(self):
print('我是%s,谁踢我!' % self.name)
实例化:a = Ball()
a.setName('足球')
a.kick()
返回:我是足球,谁踢我!
例2:class Ball:
def __init__(self, name):
self.name = name
def kick(self):
print('我是%s,谁踢我!' % self.name)
实例化:a = Ball('足球')
a.kick()
返回:我是足球,谁踢我!
例1中需要调用setName方法才能赋值,例2中在实例化对象时即赋值了,但是如果在实例化时未赋值便会报错
共有和私有
共有即实例化对象后可以直接调用获得参数值
私有是实例化对象后无法通过直接调用获得参数值,需要通过对象内部的方法来获得
实现方法:在变量名或函数名前加两个下划线'_'
例1:class Person:
name = '张三'
实例化:p = Person()
p.name
返回: 张三
例2:class Person:
__name = '张三'
实例化:p = Person()
p.__name
报错:没有__name这个参数名
例3:class Person:
__name = '张三'
def getName(self):
return self.__name
实例化:p = Person()
p.getName()
返回:张三 |
|