一、整理笔记
1.封装
class Dog:
def __init__(self,name,age,color,breed):
#定义类的属性(数据)
#self:指代当前对象
#变量的作用域:作用的范围
#name是局部变量,它的作用范围仅限于定义它的函数或者方法内部
#self.name是成员变量,它的作用范围定义它的类的内部
self.__name = name
self.__age = age
self.color = color
self.breed = breed
# __xxxx,变量名前有两个下划线,表示该变量是一个私有变量
#私有变量只允许子类的内部访问,不能从类的外部进行访问
'''
封装:
把数据和处理数据的逻辑封装起来
调用方便,并且不需要知道内部的细节
'''
def show(self):
print (self.__name,self.__age,self.__color,self.__weight)
#getter/setter方法,用于读写对象的属性
def get_name(self):
return self.__name
def get_age(self):
return self.__age
def get_color(self):
return self.__color
def get_weight(self):
return self.__weight
def set_name(self,name):
self.__name = name
def set_age(self,age):
if age>0 and age<=15:
self.__age = age
else:
#抛出异常
raise NameError('错误的年龄')
def set_color(self,color):
self.__color = color
def set_weight(self,weight):
if weight>0 and weight<=50:
self.__weight = weight
else:
raise NameError('错误的体重')
wangcai = Dog('旺财',4,'黄白','苏格兰牧羊犬')
wangcai.set_name('wangwang')
wangcai.set_age(10)
wangcai.set_color('白')
wangcai.set_weight(44)
wangcai.show()
2.继承
# object类是所有其他类的父类
# 如果一个类的父类是object,可以不必声明
class Animal(object):
#如果没有显式的提供构造的方法,程序会提供一个默认的构造方法
def run(self):
print('动物正在跑...')
'''
--继承
Dog类继承了Animal类,我们把Dog类称为子类,Animal类称为父类
继承的好处:子类可以获得父类的全部功能(包括属性和方法)
继承的同时子类也可以有自己的方法,并且子类可以对继承自父类的方法进行重写
'''
class Dog(Animal):
def bark(self):
print('wwwwwwwang.....')
#重写
def run(self):
print('dog is running......')
class Cat(Animal):
def eat(self):
print('eat fish......')
def run(self):
print('cat is climbing......')
a = Animal()
a.run()
dog = Dog()
dog.run()
dog.bark()
cat = Cat()
cat.run()
cat.eat()
3.多态
'''
--多态
同一个对象在不同的场合表现出不同的状态,称之为多态
多态可以简化方法的调用
'''
#isinstance(),判断某个对象是否是某一类的一个实例
print(isinstance(dog,Dog))
print(isinstance(dog,Animal))
#自定义的数据类型:类
def run_twice(animal):
animal.run()
animal.run()
run_twice(a)
run_twice(dog)
|