1、以下类定义中哪些是类属性,哪些是实例属性?
class C: # Python中的类名约定以大写字母开头
num = 0 # 属性
def __init__(self): # 方法
self.x = 4
self.y = 5
C.count = 6
2、怎么定义私有方法?
默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量。在python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就是私有的了。
私有变量:实例._类名__变量名
class JustCounter:
__secretCount = 0 # 私有变量
publicCount = 0 # 公开变量
def count(self):
self.__secretCount += 1
self.publicCount += 1
print(self.__secretCount)
counter = JustCounter()
counter.count() # 1
counter.count() # 2
print(counter.publicCount) # 2
print(counter._JustCounter__secretCount) # 2 Python的私有为伪私有
print(counter.__secretCount)
# AttributeError: 'JustCounter' object has no attribute '__secretCount'
私有方法:实例._类名__方法名()
class Site:
def __init__(self, name, url):
self.name = name # public
self.__url = url # private
def who(self):
print('name : ', self.name)
print('url : ', self.__url)
def __foo(self): # 私有方法
print('这是私有方法')
def foo(self): # 公共方法
print('这是公共方法')
self.__foo()
3、尝试执行以下代码,并解释错误原因:
class C:
def myFun():
print('Hello!')
c = C()
c.myFun()
4、按照以下要求定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价。
要求:
- 平日票价100元
- 周末票价为平日的120%
- 儿童票半价
class Ticket:
def __init__(self,workday=True,adult=True):
self.price=100
if workday:
self.ratio=1
else:
self.ratio=1.2
if adult:
self.discount=1
else:
self.discount=0.5
def get_price(self,num):
return self.price*self.ratio*self.discount*num
adult_1=Ticket(workday=True,adult=True)
child_1=Ticket(workday=True,adult=False)
print("2个成人+1个小孩平日票价为:%.2f" %(adult_1.get_price(2)+child_1.get_price(1)))
adult_2=Ticket(workday=False,adult=True)
child_2=Ticket(workday=False,adult=False)
print("2个成人+1个小孩周末票价为:%.2f" %(adult_2.get_price(2)+child_2.get_price(1)))
5. 总结魔术方法的使用方法
6. 利用python做一个简单的定时器类
要求:
- 定制一个计时器的类。
start
和stop
方法代表启动计时和停止计时。- 假设计时器对象
t1
,print(t1)
和直接调用t1
均显示结果。 - 当计时器未启动或已经停止计时时,调用
stop
方法会给予温馨的提示。 - 两个计时器对象可以进行相加:
t1+t2
。 - 只能使用提供的有限资源完成。