python 面向对象

对象和类

什么是类?
分类 class , 抽象个概念,一类事务的总称
对象?
类的实例 ,对象是一个实例

定义类: 类命名的规范:首字母要大写,下划线 user_name 或者 大驼峰法 UserName

面向对象的三大特征

封装

【面向对象的封装:将属性和方法封装到一个类多个类,需要使用的时候,调用这些属性和方法】

方法一:
【get,set方法】

class User(object): 
	def __init__(self, name, age, gender): 
		self.__name = name 
		self.__age = age 
		self.__gender = gender 
		
	def __str__(self): 
		return "name=" + self.__name +"age=" + str(self.__age) +"gender=" + self.__gender 
		
	def get_name(self): 
		return self.__name 
		
	def set_name(self, username): 
		self.__name = username 
		
	def get_age(self): 
		return self.__age 
		
	def set_age(self, age): 
		self.__age = age 
		
	def get_gender(self): 
		return self.__gender
		
	def set_gender(self, gender): 
		self.__gender = gender 
		
if __name__ == '__main__': 
	u = User("张三", 18, "男")
	print(u.get_name()) 
	u.name = "lisi"#更改姓名
	print(u.name)

方法二:
【property()】

class User(object): 
	def __init__(self, name, age, gender): 
		self.__name = name 
		self.__age = age 
		self.__gender = gender 
		
	def __str__(self): 
		return "name=" + self.__name +"age=" + str(self.__age) +"gender=" + self.__gender 
		
	def get_name(self): 
		return self.__name 
		
	def set_name(self, username): 
		self.__name = username 
		
    def get_age(self): 
		return self.__age 
		
	def set_age(self, age): 
		self.__age = age 
		
	def get_gender(self): 
		return self.__gender
		
	def set_gender(self, gender): 
		self.__gender = gender 
		
	name = property(get_name, set_name) 
	age = property(get_age, set_age)
	gender = property(get_gender, set_gender)
if __name__ == '__main__': 
	u = User("张三", 18, "男")
	print(u) 
	u.name = "lisi"#更改姓名
	print(u.name)

方法三:
【装饰器 @property】

class User(object): 
	def __init__(self, name, age, gender, tel): 
		self.__name = name 
		self.__age = age 
		self.__gender = gender 
		self.__tel = tel 
def __str__(self): return "name=" + self.__name

@property 
def name(self): 
	return self.__name

def age(self):
    return  self.__age
        
def gender(self):
    return self.__gender 
	
@name.setter 
def name(self, username): 
	self.__name = username
	
def age(self, age):
 	self.__name = age
        
def gender(self, gender):
 	self.__name = gender

if __name__ == '__main__': 
	u = User("张三", 18, "男", "110") 
	print(u.name) 
	u.name = "李四" 
	print(u)


继承

  • 子类继承父类的时候并不能继承所有的属性和方法
  • 方法重写(覆盖):子类继承父类的时候,可以重写方法
  • super关键字 :指针,默认指向的父类
  • python里有没有重载,只有重写,但是可以通过装饰器实现重载

注意:重写的时候方法名、参数以及参数的个数必须保持一致

class User(object):
    def __init__(self):
        self.money=100000
        
    def tell(self):
        print("好")
        
    def animal(self):
        print("猫在跑")
        
class User1(User):
    def animal(self):
        print("狗在跑")
        super().animal()

if __name__=='__main__':
    u=User1()
    print(u.money)
    print(u.tell())
    print(u.animal())

多态

Python中多态的作用

  • 让具有不同功能的函数可以使用相同的函数名,这样就可以用一个函数名调用不同内容(功能)的函数。

Python中多态的特点

  • 1、只关心对象的实例方法是否同名,不关心对象所属的类型;
  • 2、对象所属的类之间,继承关系可有可无;
  • 3、多态的好处可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强;
  • 4、多态是调用方法的技巧,不会影响到类的内部设计。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值