ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

看漫画学Python 第九章代码

2022-03-18 19:30:10  阅读:238  来源: 互联网

标签:__ name Python self print 第九章 漫画 age def


9.2 定义类

class Car(object):
	  #类体
	  pass

9.3 创建对象

class Car(object):
	  #类体
	  pass

car = Car()

9.4 类的成员

class Dog:
	def __init__(self,name,age):
		self.name = name #创建和初始化实例变量name
		self.age = age   #创建和初始化实例变量age

d = Dog("球球",2)
print("我们家狗狗名叫{0},{1}岁了。".format(d.name,d.age))

9.4.1 实例变量

class Dog:
	def __init__(self,name,age):
		self.name = name #创建和初始化实例变量name
		self.age = age   #创建和初始化实例变量age

d = Dog("球球",2)
print("我们家狗狗叫{0},{1}岁了".format(d.name,d.age))

9.4.2 构造方法

class Dog:
	def __init__(self,name,age,sex = "雄性"): #带有默认值的构造方法,能够给调用者提供多个不同版本的构造方法
		self.name = name #创建和初始化实例变量name
		self.age = age   #创建和初始化实例变量age
		self.sex = sex   #创建和初始化实例变量sex

d1 = Dog("球球",2) #创建对象调用,省略默认值
d2 = Dog("哈哈",1,"雄性")
d3 = Dog(name = "拖布",sex = "雄性",age = 3) #使用关键字参数调用构造方法

print("{0}:{1}岁{2}。".format(d1.name,d1.age,d1.sex))
print("{0}:{1}岁{2}。".format(d2.name,d2.age,d2.sex))
print("{0}:{1}岁{2}。".format(d3.name,d3.age,d3.sex))

9.4.3 实例方法 

class Dog:
	#构造方法
	def __init__(self,name,age,sex = "雄性"): #带有默认值的构造方法,能够给调用者提供多个不同版本的构造方法
		self.name = name #创建和初始化实例变量name
		self.age = age   #创建和初始化实例变量age
		self.sex = sex   #创建和初始化实例变量sex

	#实例方法
	def run(self): #定义实例方法,只有一个self参数
		print("{}在跑...".format(self.name))
	
	#实例方法
	def speak(self,sound): #定义实例方法,第一个参数是self,第二个参数是sound
		print("{}在叫,{}!".format(self.name,sound))

dog = Dog("球球",2) #创建对象调用方法,省略默认值
dog.run() #在调用时采用"对象.实例方法"。不需要传递参数
dog.speak("旺旺旺") #需要传递一个参数sound

9.4.4 类变量

class Account:
	interest_rate = 0.0568

	def __init__(self,owner,amount):
		self.owner = owner #创建和初始化实例变量owner
		self.amount = amount #创建和初始化实例变量amount

account = Account("Tony",800000.0)

print("账户名:{0}".format(account.owner)) #对实例变量通过"对象.实例变量"形式访问
print("账户金额:{0}".format(account.amount))
print("利率:{0}".format(Account.interest_rate)) #对类变量通过"类名.类变量"形式访问

9.4.5 类方法

class Account:
	interest_rate = 0.0668 #类变量利率

	def __init__(self,owner,amount):
		self.owner = owner #创建和初始化实例变量owner
		self.amount = amount #创建和初始化实例变量amount

	#类方法
	@classmethod #定义类方法需要的装饰器,装饰器以开头修饰函数方法和类,用来约束它们
	def interest_by(cls,amt):
		return cls.interest_rate * amt

interest = Account.interest_by(12000.0)
print("计算利息:{0:.4f}".format(interest))

9.5.1 私有变量

class Account:
	__interest_rate = 0.0568 #类变量利率__interest_rate

	def __init__(self,owner,amount):
		self.owner = owner #创建并初始化公有实例变量owner
		self.__amount = amount #创建并初始化私有实例变量__amount

	def desc(self):
		#在类的内部可以访问私有变量
		print("{0} 金额:{1} 利率:{2}。".format(self.owner,
											self.__amount,
											Account.__interest_rate))

account = Account("Tony",800000.0)
account.desc()

print("账户名:{0}".format(account.owner)) 
#print("账户金额:{0}".format(account.__amount)) 发生错误
#print("利率:{0}".format(Account.__interest_rate)) 发生错误

9.5.2 私有方法

class Account:
	__interest_rate = 0.0568 #类变量利率__interest_rate

	def __init__(self,owner,amount):
		self.owner = owner #创建并初始化公有实例变量owner
		self.__amount = amount #创建并初始化私有实例变量__amount

	def __get_info(self):
		#定义私有方法
		return "{0} 金额:{1} 利率:{2}。".format(self.owner,
										self.__amount,
										Account.__interest_rate)
    
	def desc(self):
		#在类的内部可以调用私有方法
		print(self.__get_info())

account = Account("Tony",800000.0)
account.desc()
#account.__get_info() 在类的外部调用私有方法,则会发生错误

9.5.3 使用属性

class Dog:
	
	#构造方法
	def __init__(self,name,age,sex = "雌性"):
		self.name = name #创建和初始化实例变量name
		self.__age = age #创建和初始化私有实例变量__age

	#实例方法	
	def run(self):
		print("{}在跑...".format(self.name))

	#get方法
	def get_age(self): #定义get()方法,返回私有实例变量__age
		return self.__age

	#set方法
	def set_age(self,age): #定义set()方法,通过参数更新私有实例变量__age
		self.__age = age

dog = Dog("球球",2)
print("狗狗年龄:{}".format(dog.get_age())) #通过get()方法取值
dog.set_age(3) #通过set()方法赋值
print("修改后狗狗年龄:{}".format(dog.get_age()))
class Dog:
	
	#构造方法
	def __init__(self,name,age,sex = "雌性"):
		self.name = name #创建和初始化实例变量name
		self.__age = age #创建和初始化私有实例变量__age

	#实例方法	
	def run(self):
		print("{}在跑...".format(self.name))

	@property
	def age(self): #替代get_age(self)
		return self.__age

	@age.setter
	def age(self,age): #替代set_age(self,age)
		self.__age = age

dog = Dog("球球",2)
print("狗狗年龄:{}".format(dog.age)) #通过get()方法取值
dog.age = 3 #通过set()方法赋值
print("修改后狗狗年龄:{}".format(dog.age))

9.6.1 Python中的继承

class Animal:
	#定义父类
	def __init__(self,name):
		self.name = name #实例变量

	def show_info(self):
		return "动物的名字{0}".format(self.name)

	def move(self):
		print("动一动...")

class Cat(Animal):
	#定义子类猫
	def __init__(self,name,age):
		super().__init__(name) #调用父类构造方法,初始化父类成员变量
		self.age = age #实例变量

cat = Cat("Tom",2)
cat.move()
print(cat.show_info())

9.6.2 多继承

class Horse:
	def __init__(self,name):
		self.name = name

	def show_info(self):
		return "马的名字:{0}".format(self.name)

	def run(self):
		print("马跑...")

class Donkey:
	def __init__(self,name):
		self.name = name

	def show_info(self):
		return "驴的名字{0}".format(self.name)

	def run(self):
		print("驴跑...")

	def roll(self):
		print("驴打滚...")

class Mule(Horse,Donkey):
	def __init__(self,name,age):
		super().__init__(name)
		self.age = age

m = Mule("骡宝莉",1)
m.run() #继承父类Horse方法
m.roll() #继承父类Donkey方法
print(m.show_info()) #继承父类Horse方法

9.6.3 方法重写

class Horse:
	def __init__(self,name):
		self.name = name

	def show_info(self):
		return "马的名字:{0}".format(self.name)

	def run(self):
		print("马跑...")

class Donkey:
	def __init__(self,name):
		self.name = name

	def show_info(self):
		return "驴的名字{0}".format(self.name)

	def run(self):
		print("驴跑...")

	def roll(self):
		print("驴打滚...")

class Mule(Horse,Donkey):
	def __init__(self,name,age):
		super().__init__(name)
		self.age = age #实例变量age

	def show_info(self):
		return "骡:{0},{1}岁。".format(self.name,self.age)

m = Mule("骡宝莉",1)
m.run() #继承父类Horse方法
m.roll() #继承父类Donkey方法
print(m.show_info()) #子类Mule自己方法

9.7.1 继承与多态

class Aniaml:
	def speak(self):
		print("动物叫,但不知道是哪种动物叫!")

class Dog(Aniaml):
	def speak(self):
		print("小狗:旺旺叫...")

class Cat(Aniaml):
	def speak(self):
		print("小猫:喵喵叫...")

animal1 = Dog()
animal2 = Cat()
animal1.speak()
animal2.speak()

9.7.2 鸭子类型测试与多台

class Aniaml:
	def speak(self):
		print("动物叫,但不知道是哪种动物叫!")

class Dog(Aniaml):
	def speak(self):
		print("小狗:旺旺叫...")

class Cat(Aniaml):
	def speak(self):
		print("小猫:喵喵叫...")

class Car:
	def speak(self):
		print("小汽车:滴滴叫...")

def start(obj): #接收的obj对象具有speak()方法
	obj.speak()

start(Dog())
start(Cat())
start(Car())

标签:__,name,Python,self,print,第九章,漫画,age,def
来源: https://blog.csdn.net/fevipanda/article/details/123567203

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有