类的三要素:名称、属性、方法
面向对象的三要素:封装,继承,多态
class Cat(object):
def __init__(self, new_name=' ', new_age=' '):
print("我是初始化")
self.name = new_name
self.age = new_age
def __str__(self):
return "%s的年 龄是%s"%(self.name, self.age)
def eat(self):
print(self.name +'在吃鱼。。。。')
def drink(self):
print(self.name + '在喝水......')
def introduce(self):
print('%s的年龄是%s' % (self.name, self.age))
#创建一个属性
tom = Cat()
#调用
tom.eat()
tom.drink()
tom.introduce()
lan = Cat('lan', '18')
lan.eat()
lan.drink()
lan.introduce()
print(lan)
print(tom)
#self 谁调用指向谁 就是第一个参数比如tom lan 但不能直接把对象名传进去,这样会报错 可以不用self 可以是a b c都可以 只不过为了统一一个标准使用self
#__init__是用来进行初始化的 默认自动调用 可以用来为参数赋初值
#__str__的作用是当print()实例化过的对象时直接返回一个信息 一般是用来做描述信息用的
#__del__作用是删除当前对象会自动调用
print(sys.getrefcount()) 可以查看当前对象引用了几次
继承
import sys
class dongwu(object):
def one(self):
print('1')
def two(self):
print('2')
class gou(dongwu):
def two(self):
print('two')
def three(self):
print('3')
def fore(self):
print('4')
def duotai(temp):
temp.two
t=gou()
f=dongwu()
x=t
duotai(x)#多态性
t.one()
t.two()
如上所示 dongwu为gou的父类(基类)gou为子类(派生类)
gou中可以使用dongwu中的方法这叫做继承
但发现父类中的方法不是自己想要的 自己再重新写一遍 后面就会调用自己的这叫做重写
想要调用被重写的父类的方法有两种方法:
A)dongwu.two()
B)super(gou, self).one()
可以多继承:即继承多个类 比如C继承 A,B class C(A,B)这要求程序中尽可能避免出现相同的方法名
多态:
多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)
- 序列类型有多种形态:字符串,列表,元组
- 动物有多种形态:人,狗,猪
多态性
多态性是指具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。
关于类属性、实例属性、类方式、实例方法、静态方法:
https://blog.csdn.net/weixin_38280090/article/details/85931922
关于隐藏属性和私有化法:
https://blog.csdn.net/weixin_38280090/article/details/85302775
关于私有属性使用property访问私有属性:https://blog.csdn.net/weixin_38280090/article/details/85326567