面向对象(pro)
C++ PY java
ruby
go
面向过程
C
直接操作内存
对象=包含了很多不同的“元素”的一个物体
性质
集合体
封装性
每一个对象封装了不同的对象
面向对象的思想:
就是把某一个物品的特性封装起来
类里面封装了class的变量(成员),对成员操作的方法
类的变量就是对象
方法:
实例(私有)方法:
类(公有)方法:类名.方法
类的方法(传入参数是self的方法):
特殊的构造方法
类的不同对象调用类的方法有属于我这个对象的独有结果
使用我类自身内容的方法
self:就是要操作我类自身变量前面要加的标识
传入声明我这个对象的方法
构造方法:
我创建类的同时 自动 执行这个方法
MyClass()
()括号就是一个构造器
实例化类
p = people('2112', 10, 30)
p.speak()
xi =people('xi',11,22)
xi.speak()
print("%s 说: 我 %d 岁。" % (xi.name, xi.age))
class bo:
'帮助信息:xxxx'
__xuehao=21100101
xuehao=0
number=100#类变量:不管是那个类创建的,除非重新赋值,这个值都是一样的
def __init__(self,name,sex):
self.name=name
self.sex=sex
def __xuehao(self):
print("")
def numshow(self):
print("number=",self.number)
def numset(self,n):
self.number=n
def information(self):
print("name=",self.name)
print("sex=",self.sex)
xihaobo=bo("xihaobo","male")
haobo=bo("haobo","secrate")
xihaobo.numshow()
xihaobo.numset(1000)
xihaobo.numshow()
xihaobo.information()
haobo.numshow()
haobo.information()
#del haobo.name
#haobo.information()
print(hasattr(haobo,"name"))
print(getattr(xihaobo,"sex"))
setattr(haobo,"sex","male")
haobo.information()
print(bo.__doc__)
print(bo.__name__)
print(bo.__module__)
print(bo.__base__)
print(bo.__dict__)
继承(具有一定的共同的特点的一类,但又有不同的一类,用继承的方法去表示)
继承:他本质上:算是把父类的方法复制到子类里面,就可实现调用了。但是这些复制到子类的成员变量和
方法,本质上还是属于父类
重写:对继承的父类方法进行适应我子类的修改 方法名一定要一样,参数列表不一定要一样(对父类方法的覆盖)
class dog:#父类
__a=1
number=111111
def __f(self):
print("这是父类的私有方法")
def __init__(self):
print("使用父类构造函数")
def parent(self):
print("父类的函数")
def set(self,num):
dog.number=num
print("当前父类number",dog.number)
def num(self):
print("num=",dog.number)
def wangwang(self):
print("父类的函数")
class zhonghuadog(dog):#子类
def __init__(self):
print("子类的构造函数")
def child(self):
print("子类的函数")
def wangwang(self):
print("子类覆盖")
print("汪")
a=dog()
a.__init__()
a.parent()
a.set(100)
a.num()
a.wangwang()
b=zhonghuadog()
b.__init__()
b.child()
b.parent()
b.set(99999)
b.num()
b.wangwang()