类与对象
1、类定义中哪些是类属性,哪些是实例属性?
Python类数据属性:定义在类里面但在函数外面的变量,它们都是静态的。
定义在__init__()方法里的变量就是实例属性,这些属性只有对象被创建时才会被创建。
2、怎么定义私有⽅法?
在 Python 中定义私有方法只需要在函数名前加上两个下划线“__”,那么这个方法(函数)就为私有的了。
3、尝试执行以下代码,并解释错误原因:
class C:
def myFun():
print('Hello!')
c = C()
c.myFun()
NameError: name ‘C’ is not defined
错误原因:c = C()是类实例化,应该在类的外面,因此c = C() 和c.myFun()缩进不对,改正后代码如下,再次运行:
class C:
def myFun():
print('Hello!')
c = C()
c.myFun()
仍然报出以下错误:
TypeError: myFun() takes 0 positional arguments but 1 was given
原因:调用 c.myFun()时,系统自动将类实例对象c传入myFun(),但myFun()定义时缺少参数self,改正后再次运行,运行正确。
class C:
def myFun(self):
print('Hello!')
c = C()
c.myFun()
Hello!
4、按照以下要求定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价。
- 平日票价100元
- 周末票价为平日的120%
- 儿童票半价
class Ticket():
ticket= 100
def weekend(self):
self.ticket *= 1.2
return self.ticket
def children(self):
self.ticket *= 0.5
return self.ticket
man=Ticket()
a=man.ticket
# a=man.weekend()
print(a)
child=Ticket()
# child.weekend()
b=child.children()
print(b)
price=2*a+b
print(price)
魔法方法
1、总结多种魔法方法,如__new__ , init , str , rstr , getitem , setitem 等等,的使用方法。
①__new__:构造函数,创建并返回一个实例对象,如果__new__只调用了一次,就会得到一个对象。继承自object的新式类才有__new__这一魔法方法。
参数:至少必须要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供。
返回值:必须要有返回值,返回实例化出来的实例。可以return 父类__new__出来的实例,或者直接是object的__new__出来的实例。若__new__没有正确返回当前类cls的实例,那__init__是不会被调用的,即使是父类的实例也不行。
__new__是唯一在实例创建之前执行的方法,一般用在定义元类时使用。
②__init__:初始化函数,在创建实例对象为其赋值时使用,在__new__之后。
__init__必须至少有一个参数self,就是这个__new__返回的实例,__init__是在__new__的基础上可以完成一些其它初始化的动作。
init__不需要返回值。
③__str:在将对象转换成字符串 str(对象) 测试的时候,打印对象的信息。
__str__方法必须要return一个字符串类型的返回值,作为对实例对象的字符串描述。
str__实际上是被print函数默认调用的,当要print(实例对象)时,默认调用__str__方法,将其字符串描述返回。如果不是要用str()函数转换,当你打印一个类的时候,那么print首先调用的就是类里面的定义的__str。
④__repr__:str的备胎,在有__str__的时候执行__str__,没有实现__str__的时候,执行__repr__,repr(obj)内置函数对应的结果是__repr__的返回值
当你使用%r格式化的时候 触发__repr__。
⑤__getitem__:定义获取容器中元素的行为,相当于self[key]。
⑥__setitem__:定义设置容器中指定元素的行为,相当于self[key] = value。
2、利用python做一个简单的定时器类
要求:
- 定制一个计时器的类。
- start 和stop 方法代表启动计时和停止计时。
- 假设计时器对象t1 , print(t1) 和直接调用t1 均显示结果。
- 当计时器未启动或已经停止计时时,调用stop 方法会给予温馨的提示。
- 两个计时器对象可以进行相加: t1+t2 。
- 只能使用提供的有限资源完成。
6万+

被折叠的 条评论
为什么被折叠?



