我之前也写了一篇关于面向对象编程的博客,两篇博客内容相近,包含了我这两次学习的全部内容
1. Caracteres de escape
- \ n: nueva línea
- \ t: carácter de tabulación, tabulación
- "\" puede ir seguido de octal o hexadecimal para representar caracteres, como \ 141, \ x61 para un
- "\" puede ir seguido de códigos de caracteres Unicode para representar caracteres
- Si no desea que "\" indique escape, puede precederlo con r, como r \
2. Formato
- Método 1: utilice "%"
- Método 2: usar formato
- Método 3: agregue la letra f delante de la cadena
a, b = 5, 10
# 方法1:
print('%d * %d = %d' % (a, b, a * b))
# 方法2:
print('{0} * {1} = {2}'.format(a, b, a * b))
# 方法3:
print(f'{a} * {b} = {a * b}') # 适用于python 3.6以后的版本
3. Programación orientada a objetos
-
Para la orientación a objetos, creo que todos están familiarizados con ella, pero ¿cómo resumiría brevemente qué es la orientación a objetos? Esta es una pregunta muy interesante. He estudiado lenguajes de programación como el lenguaje c, c #, java, etc., pero la interpretación de la orientación a objetos aún no es muy clara. Esta es una pregunta que me ha estado molestando ¿Qué es la orientación a objetos?
-
"Redacte un conjunto de estructuras de datos y métodos para procesarlos en objetos, agrupe objetos con el mismo comportamiento en clases, oculte detalles internos a través de la encapsulación de clases y realice la especialización de clases a través de la herencia. (Especialización) y generalización (generalización), a través del polimorfismo ( polimorfismo) para lograr una asignación dinámica basada en tipos de objetos ". Tal explicación puede no ser fácil de entender
-
Pero hoy vi una explicación, que puede ser más fácil de entender:
4. Clases y objetos
- En pocas palabras, una clase es un plano y una plantilla de un objeto, y un objeto es una instancia de una clase.
- Aunque esta explicación es un poco como usar conceptos para explicar conceptos, al menos podemos ver en esta oración
- Las clases son conceptos abstractos y los objetos son cosas concretas.
- En el mundo de la programación orientada a objetos, todo es un objeto. Los objetos tienen atributos y comportamientos. Cada objeto es único y debe pertenecer a una determinada clase (tipo).
- Cuando extraemos las características estáticas (atributos) y las características dinámicas (comportamientos) de una gran cantidad de objetos que comparten características comunes, podemos definir algo llamado "clase".
5. Defina la clase
- palabra clave de clase
- Entre ellos, las funciones escritas en la clase se suelen llamar métodos (objeto). Estos métodos son los mensajes que el objeto puede recibir
class Student(object):
# __init__是一个特殊方法用于在创建对象时进行初始化操作
# 通过这个方法我们可以为学生对象绑定name和age两个属性
def __init__(self, name, age):
self.name = name
self.age = age
def study(self, courseName):
print('%s正在学习%s.' % (self.name, courseName))
# PEP 8要求标识符的名字用全小写多个单词用下划线连接
# 但是部分程序员和公司更倾向于使用驼峰命名法(驼峰标识)
def watchMovie(self):
if self.age < 12:
print('%s观看《喜羊羊》.' % self.name)
else:
print('%s快去学校上课.' % self.name)
6. Crea y usa objetos
- Después de definir una clase, puede crear un objeto de la siguiente manera y enviar un mensaje al objeto
def main():
# 创建学生对象并指定姓名和年龄
stu1 = Student('amy', 21)
# 给对象发study消息
stu1.study('Python')
# 给对象发watchMovie消息
stu1.watchMovie()
stu2 = Student('李小白', 15)
stu2.study('高等数学')
stu2.watchMovie()
if __name__ == '__main__':
main()
7. Acceder a problemas de visibilidad
- En Python, solo hay dos tipos de permisos de acceso para atributos y métodos, es decir, público y privado. Si desea que el atributo sea privado, puede usar dos guiones bajos como principio al nombrar el atributo.
class Test:
def __init__(self, name):
self.__name = Jackson
def __bar(self):
print(self.__name)
print('__age')
def main():
test = Test('hello')
test.__age() # AttributeError: 'Test' object has no attribute '__age'
print(test.__name) # AttributeError: 'Test' object has no attribute '__name'
if __name__ == "__main__":
main()
Caso 1: Diseñe una función para generar un código de verificación de una longitud específica, el código de verificación se compone de letras y números en mayúsculas y minúsculas
import random
def generateCode(codeLen=4):
"""
生成指定长度的验证码
:param codeLen: 验证码的长度(默认4个字符)
:return: 由大小写英文字母和数字构成的随机验证码
"""
allChars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
lastPos = len(allChars) - 1 # 生成allChars的长度,应为:61
code = '' # 以空格隔开
for _ in range(codeLen):
index = random.randint(0, lastPos)
code += allChars[index]
return code
Caso 2: Impresión del triángulo de Yanghui
def main():
num = int(input('请输入行数为: '))
yh = [[]] * num
for row in range(len(yh)):
yh[row] = [None] * (row + 1)
for col in range(len(yh[row])):
if col == 0 or col == row:
yh[row][col] = 1
else:
yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
print(yh[row][col], end='\t')
print()
if __name__ == '__main__':
main()
Caso 3: Selección de números de bolas de dos colores
- Este ejemplo implica un conocimiento relativamente profesional. No lo entendí. Espero que los lectores puedan decirme lo que piensas después de leerlo.
from random import randrange, randint, sample
def display(balls):
"""
输出列表中的双色球号码
"""
for index, ball in enumerate(balls):
if index == len(balls) - 1:
print('|', end=' ')
print('%02d' % ball, end=' ')
print()
def random_select():
"""
随机选择一组号码
"""
red_balls = [x for x in range(1, 34)]
selected_balls = []
selected_balls = sample(red_balls, 6)
selected_balls.sort()
selected_balls.append(randint(1, 16))
return selected_balls
def main():
n = int(input('机选几注: '))
for _ in range(n):
display(random_select())
if __name__ == '__main__':
main()
Caso completo 1: Defina una clase para describir el reloj digital con cronometraje automático
from time import sleep
class Clock(object):
"""数字时钟"""
def __init__(self, hour=0, minute=0, second=0):
"""初始化方法
:param hour: 时
:param minute: 分
:param second: 秒
"""
self._hour = hour
self._minute = minute
self._second = second
def run(self):
"""走字"""
self._second += 1
if self._second == 60:
self._second = 0
self._minute += 1
if self._minute == 60:
self._minute = 0
self._hour += 1
if self._hour == 24:
self._hour = 0
def show(self):
"""显示时间"""
return ('%02d:%02d:%02d' % (self._hour, self._minute, self._second))
def main():
clock = Clock(12, 00, 00)
while True:
print(clock.show())
sleep(1)
clock.run()
if __name__ == '__main__':
main()