没有考虑面向对象也没有类,只是说定义一个功能在脚本文件里,这时候它就是函数。
如果是以面向对象的形式来写一个类,封装一个类的行为的时候,它成为方法。
1、实例的方法
person.py
class Person:
def __init__(self, name='', age=0, gender='男') //self 表示当前的实例
self.name = name
self.age = age
self.gender = gender
def say(self, word): //self 保留表示实例方法
print("{} say: {}".format(self.name, word))
>>>from person import Person
>>>p = Person('Tom', 20)
>>>p.name
'Tom'
>>>p.say('今天天气真好')
Tom say: 今天天气真好
>>>p2 = Person('Jerry', 23)
>>>p2.say('我想学Python')
Jerry say: 我想学Python
1、
cellphone.py
class CellPhone:
def __init__(self, brand, price=0.0)
self.brand = brand
self.price = price
def on(self):
print('{} 手机开机...'.format(brand))
def send_message(self, to, message):
print(f'{self.brand} 给 {to}发送短信, 内容是:{message}')
>>>from cellphone import CellPhone
>>>c = CellPhone('iphone6s', 5800.0)
>>>c2 = CellPhone('Mi5s', 2900)
>>>c.brand
'iphone6s'
>>>c2.brand
Mi5s
>>>c.on()
iphone6s 手机开机...
>>>c2.on()
Mi5s 手机开机...
>>>c2.send_message('1234567890', '我想学习Pyhon')
Mi5s 给 1234567890 发送短信, 内容是:我想学习Python
>>>c.send_message('1234567890', '今天天气真好' )
iphone6s 给 1234567890 发送短信, 内容是:今天天气真好
>>>CellPhone.on() //TypeError: on() missing 1 required positional argument: 'self'
>>>CellPhone.on(c)
iphone6s 手机开机...
>>>CellPhone.on(c2)
Mi5s 手机开机...
2、 __开头结尾的函数属于特殊函数
class CellPhone:
def __init__(self, brand, price=0.0)
self.brand = brand
self.price = price
def __repr__(self): //返回当前对象的表现
return '<CellPhone : {}>'.format(self.brand)
def __str__(self): //返回当前对象的字符串表现
return '[CellPhone : {}]'.format(self.brand)
def __add__(self, other): //运算符重载
return self.price + other.price
def on(self):
print('{} 手机开机...'.format(brand))
def send_message(self, to, message):
print(f'{self.brand} 给 {to}发送短信, 内容是:{message}')
>>>import CellPhone
>>>c = CellPhone('Mi', 2900)
>>>c2 = CellPhone('iphone5s', 5900)
>>>c
<CellPhone : Mi>
>>>print(c)
[CellPhone : Mi]
>>>print(c + c2)
8800