"""
编码规范:
类名首字母应以大写字母开头
类的成员/属性:
成员属性 实例化对象的属性:
self.name=name 可以被访问,也可以在类的外部被修改
私有属性 实例化对象的私有属性:
self.__age=age 属性名前加两下划线 外部无法被访问,
也不能被修改,只能内部访问和修改
想要在外部访问只能自定义一个方法了
强制访问 私有属性:
p._People__age 对象名._类名__私有属性
公共属性:
类的属性,也叫静态属性,他是在类的内部定义的
class people():
account=100 #这个变量就是静态属性
普通方法:通过对象引用类的方法
静态方法:只能通过类去调用静态方法 格式如下:
@staticmethod
class F1:
def a1():
print("a1")
F1.a1()
封装:
1,类:封装了属性 和方法
2,对象:封装了普通属性的值
小结 对象再去引用类的方法
继承:
字面意思就能理解了,子继承父,python中 子可以继承多个父 ,多继承
class F1(A):
class F1(A,B,C):
多态:
python 并不支持多态,可以通过一些技术手段实现。也就意味着类有多种形态,这么说吧
class 动物 (object) #基类
def behaviour():
#通过一些技术手段将此方法变成子类必须强行重构的方法,这也就实现多态第一步
class 猴子(动物):#子类
def behaviour():
print("爬树")
class 狗(动物):
def behaviour():
print("吃屎")
monkey=猴子()
dog=狗()
动物(monkey) #动物的爬树形态
动物(dog)#动物的吃屎形态
面向对象内存机制小结:
普通属性:保存对象中
静态属性:保存在类中
普通方法:保存在类中
静态方法:保存在类中
类在内存中只保存一份,每创建一个对象就开一份内存空间,对象保存了属性的值,对象再去引用类的方法
面向对象内存机制心结:
如果类的没有任何属性 那么你创建对象,对象也是要在内存开辟空间
但是对象内没有封装任何东西,就是有点浪费内存了
面向对象 优点:
可以使得代码的重用行更好,扩展性更强大
缺点:
对于简单一次性操作的功能 用面向对象 那就相当于杀鸡用宰牛刀 大材小用,用函数过程编程即可
面向对象 什么时候适用:
1,构造一个模板,可以创建很多个对象 (最通俗的理解,最深奥的思维=。=)
2,N个函数内有相同共同功能 可以将相同共同功能提取出来 创建一个模板
3,N个函数内有共同的参数时候,也可以将共同的参数提取出来 创建一个模板类
个人小结:
万物皆对象,万物都是有关联的
程序员应当建立一个OOP面向对象编程思想,这样会使你的效率大大提高,代码质量更高
"""
class People(object): job="IT" def __init__(self,name,age): self.NAME=name self.__age=age pass def sayhi(self): print("我叫%s今年%s岁我的工作是%s" %(self.NAME,self.__age,self.job)) def get_age(self): """ 可以获取私有属性 :return: """ return self.__age