练习题:
1、以下类定义中哪些是类属性,哪些是实例属性?
class C:
num = 0
def __init__(self):
self.x = 4
self.y = 5
C.count = 6
其中 C.count = 6 为类的属性,
self.x=4 以及 self.y=5 为实例属性
2、怎么定义私有⽅法
?
私有方法指的是外部对象不能直接访问的方法,若直接访问,系统会报错。而定义私有方法的方式只需要在方法名前加上__即可。
class Site:
x=Site()
x.__foo()
# AttributeError: 'Site' object has no attribute '__foo'
3、尝试执行以下代码,并解释错误原因:
class C:
def myFun():
print('Hello!')
c = C()
c.myFun()
首先由于关于c最后两行代码没有缩进,使得python的判断c=C( )为定义类C的一部分,其次没有在定义方法时注明self(方法的自身,但不需参数引入),导致错误。
改正后的代码如下:
class C:
def myFun(self):
print('Hello!')
c = C()
c.myFun()
#Hello!
4、按照以下要求定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价。
要求:
平日票价100元
周末票价为平日的120%
儿童票半价
class Ticket():
# your code here
class Ticket():
def __init__(self,day,m,n):
p=100 * m + 50 * n
if day>=1 and day<=5:
self.day="非周末"
self.adultnum=m
self.kidnum=n
self.price= p
else:
self.day="周末"
self.price=1.2 * p
def pri(self):
print(self.day)
print("总票价为 %d" % self.price)
bill=Ticket(2,2,1)
bill.pri( )
#非周末
#总票价为 250
参考:https://github.com/datawhalechina/team-learning-program/blob/master/PythonLanguage/13.%20%E7%B1%BB%E4%B8%8E%E5%AF%B9%E8%B1%A1.md