欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > read code and make summer (python)

read code and make summer (python)

2025/1/19 12:48:07 来源:https://blog.csdn.net/qq_45858803/article/details/139753860  浏览:    关键词:read code and make summer (python)

read code and make summer

    • ==标题==:语法
      • ==标题==:类的定义
      • ==标题==:继承
      • ==标题==:多态
      • ==标题==:__all__ = ['create_dataset', 'create_dataloader']
      • ==标题==:yield
      • ==标题==: f-string(格式化字符串)
      • ==标题==:getattr()
      • ==标题==:logging
      • ==标题==:seed
      • ==标题==:slice
      • ==标题==:assert
      • ==标题==:iter()
      • ==标题==:isinstance
    • ==标题== :torch
      • ==标题==:torch.Generator()
    • ==标题== :numpy
      • ==标题==:numpy.random
    • ==标题== :importlib
      • ==标题==:importlib.import_module(f'basicsr.data.{file_name}')
    • ==标题==:os
      • ==标题==:osp.dirname(osp.abspath(__file__))
      • ==标题==:osp.relpath(entry.path, root)
      • ==标题==:osp.splitext(osp.basename(v))[0]
    • ==标题==: 异常
      • ==标题==:raise TypeError('"suffix" must be a string or tuple of strings')
    • ==标题==:random
      • ==标题==:math.ceil
    • ==标题==:工具包
      • ==标题==:获取指定的目录下包含指定内容的文件或者目录的名字

标题:语法

标题:类的定义

在 Python 中,定义一个类的语法非常简洁和灵活。下面是一个典型的类定义的基本语法:

class ClassName:# 类的属性和方法pass

详细解释

  • class: 关键字用于声明一个类。
  • ClassName: 类的名称,遵循标识符命名规则。
  • :: 冒号表示类定义的开始。
  • 类的主体部分缩进,通常是四个空格。
  • pass: 是一个占位符,表示在类主体中没有任何内容。你可以在这里定义类的属性和方法。

示例

class Person:# 类的属性species = "Homo sapiens"# 类的方法def __init__(self, name, age):self.name = nameself.age = agedef greet(self):print(f"Hello, my name is {self.name} and I am {self.age} years old.")# 实例化对象
john = Person("John", 30)
john.greet()  # 输出: Hello, my name is John and I am 30 years old.

在这个示例中,Person 类有一个类属性 species 和两个方法 __init__greet__init__ 方法是类的构造函数,在创建对象时调用。greet 方法用于打印问候语。

类的构造函数 __init__

类的构造函数 __init__ 是一个特殊的方法,用于初始化新创建的对象。在类实例化时,构造函数会自动调用,并传递参数给对象的属性。

class Person:def __init__(self, name, age):self.name = nameself.age = age# 实例化对象并传递参数
john = Person("John", 30)
print(john.name)  # 输出: John
print(john.age)   # 输出: 30

self 参数

在类的方法中,第一个参数通常是 self,它表示当前对象实例本身。通过 self,你可以访问对象的属性和方法。

class MyClass:def __init__(self, x):self.x = xdef print_value(self):print(self.x)obj = MyClass(10)
obj.print_value()  # 输出: 10

类的继承

Python 支持类的继承,一个类可以继承另一个类的属性和方法。语法如下:

class ChildClass(ParentClass):# 子类的属性和方法pass

示例

class Animal:def speak(self):print("Animal speaks")class Dog(Animal):def bark(self):print("Dog barks")dog = Dog()
dog.speak()  # 输出: Animal speaks
dog.bark()   # 输出: Dog barks

在这个示例中,Dog 类继承了 Animal 类的 speak 方法,并添加了自己的 bark 方法。

总结

在 Python 中,类的定义通过简洁的语法实现了面向对象编程的基本特性。通过定义类和实例化对象,可以创建具有属性和方法的对象,实现代码的组织、复用和扩展。

标题:继承

在 Python 中,继承是面向对象编程的重要概念之一,允许一个类(子类)基于另一个类(父类)定义新的类。子类继承了父类的属性和方法,同时可以添加自己的属性和方法,或者重写父类的方法。

基本语法

class ParentClass:# 父类的属性和方法class ChildClass(ParentClass):# 子类的属性和方法

示例

# 定义一个父类
class Animal:def __init__(self, name):self.name = namedef speak(self):print(f"{self.name} makes a sound")# 定义一个子类,继承自父类 Animal
class Dog(Animal):def speak(self):print(f"{self.name} barks")# 实例化子类对象
dog = Dog("Buddy")
dog.speak()  # 输出: Buddy barks

在这个示例中,Dog 类继承了 Animal 类的属性和方法,并且重写了 speak() 方法,使其输出狗的声音。

方法重写(Override)

子类可以重写(Override)父类的方法,即在子类中重新定义父类中已有的方法。

class Cat(Animal):def speak(self):print(f"{self.name} meows")cat = Cat("Whiskers")
cat.speak()  # 输出: Whiskers meows

调用父类方法

子类可以通过 super() 函数调用父类的方法。

class Fish(Animal):def speak(self):super().speak()print("But fishes don't make sounds")fish = Fish("Nemo")
fish.speak()  # 输出: Nemo makes a sound \n But fishes don't make sounds

多重继承

Python 支持多重继承,即一个类可以同时继承自多个父类。

class A:def method(self):print("A method")class B:def method(self):print("B method")class C(A, B):passobj = C()
obj.method()  # 输出: A method

在多重继承中,Python 使用方法解析顺序(Method Resolution Order,MRO)来确定方法调用的优先顺序。

继承与组合

继承是一种"is-a"(是一个)关系,表示一个对象是另一个对象的一种类型。而组合是一种"has-a"(有一个)关系,表示一个对象包含另一个对象作为其一部分。

class Engine:def start(self):print("Engine started")class Car:def __init__(self):self.engine = Engine()def start(self):self.engine.start()print("Car started")my_car = Car()
my_car.start()  # 输出: Engine started \n Car started

在这个示例中,Car 类使用组合来包含一个 Engine 对象,而不是继承自 Engine 类。

使用继承的优点

  • 代码重用:避免了重复编写相同的代码。
  • 可扩展性:子类可以在不改变父类的情况下添加新功能。
  • 代码组织:将相似的类归为一类,使代码更易于理解和维护。

总结

继承是 Python 中实现代码重用、扩展和组织的重要机制之一。通过继承,可以构建具有层次结构的类,使代码更加清晰、灵活和可维护。

标题:多态

多态是面向对象编程的一个重要概念,它允许不同类的对象对同一消息做出不同的响应。简而言之,多态性允许不同类的对象对同一个方法具有不同的实现,从而使得代码更加灵活和可扩展。

多态的实现方式

多态性主要通过继承和方法重写来实现。

  1. 继承和方法重写:子类可以重写父类的方法,从而使得不同的子类对象在调用相同方法时表现出不同的行为。
class Animal:def speak(self):print("Animal speaks")class Dog(Animal):def speak(self):print("Dog barks")class Cat(Animal):def speak(self):print("Cat meows")# 多态性的体现
animals = [Dog(), Cat()]
for animal in animals:animal.speak()

在这个示例中,Dog 类和 Cat 类都继承了 Animal 类,并且分别重写了 speak 方法。当我们将 Dog 对象和 Cat 对象放入同一个列表中,并且遍历调用它们的 speak 方法时,它们表现出了不同的行为。

  1. 鸭子类型:不依赖继承,而是依赖于对象的实现。
class Duck:def speak(self):print("Duck quacks")class Human:def speak(self):print("Human talks")# 多态性的体现
def make_sound(entity):entity.speak()duck = Duck()
human = Human()make_sound(duck)   # 输出: Duck quacks
make_sound(human)  # 输出: Human talks

在这个示例中,Duck 类和 Human 类都实现了 speak 方法,尽管它们没有共同的父类,但是它们都可以作为参数传递给 make_sound 函数,并且根据对象的实际类型调用相应的方法,这就是多态性的体现。

多态的优点

  1. 代码重用:多态性可以使得不同类的对象对同一消息做出不同的响应,从而避免了重复编写相似的代码。
  2. 可扩展性:通过添加新的子类并重写父类的方法,可以很容易地扩展现有的代码功能。
  3. 简化代码:多态性使得代码更加简洁、灵活和易于理解。

总结

多态是面向对象编程中的一个重要概念,通过继承和方法重写实现,使得不同类的对象可以对同一个消息做出不同的响应。多态性使得代码更加灵活、可扩展和易于理解,是面向对象编程的核心之一。
标题:[new_element for element in iterable if condition]

[new_element for element in iterable if condition]

new_element: 新列表中的元素,可以是对 element 的某种变换。
element: 迭代中的每个元素。
iterable: 可迭代对象(如列表、字符串、range 等)。
condition: 条件表达式,只有满足该条件的元素才会被包含在新列表中。

生成一个包含所有偶数的列表:

even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # 输出: [0, 2, 4, 6, 8]

生成一个包含所有字符串长度大于3的单词的列表:

words = ["apple", "banana", "cherry", "date"]
long_words = [word for word in words if len(word) > 3]
print(long_words)  # 输出: ['apple', 'banana', 'cherry']

生成一个字典,其中键为数字,值为数字的平方,只包含偶数:

squares = {x: x**2 for x in range(10) if x % 2 == 0}
print(squares)  # 输出: {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

生成一个集合,包含所有字符串长度大于3的单词:

words = {"apple", "banana", "cherry", "date"}
long_words_set = {word for word in words if len(word) > 3}
print(long_words_set)  # 输出: {'banana', 'apple', 'cherry'}

生成一个生成器对象,包含所有偶数:

even_numbers_gen = (x for x in range(10) if x % 2 == 0)
print(list(even_numbers_gen))  # 输出: [0, 2, 4, 6, 8]

创建一个嵌套列表,其中包含从1到9的所有数,但排除掉5:

nested_list = [[x for x in range

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com