小编Tor*_*eli的帖子

Django 中的 __str__ 函数在做什么?

我正在阅读并试图理解 django 文档,所以我有一个合乎逻辑的问题。

有我的models.py文件

from django.db import models

# Create your models here.


class Blog(models.Model):
    name = models.CharField(max_length=255)
    tagline = models.TextField()

    def __str__(self):
        return self.name



class Author(models.Model):
    name = models.CharField(max_length=255)
    email = models.EmailField()

    def __str__(self):
        return self.name



class Post(models.Model):
    blog = models.ForeignKey(Blog)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateField()
    mod_date = models.DateField()
    authors = models.ManyToManyField(Author)
    n_comments = models.IntegerField()
    n_pingbacks = models.IntegerField()
    rating = models.IntegerField()

    def __str__(self):
        return self.headline
Run Code Online (Sandbox Code Playgroud)

__str__每个类中的每个函数在这里做什么?我需要这些功能的原因是什么?

python django django-models

20
推荐指数
3
解决办法
4万
查看次数

基于推送和基于拉的结构(如IEnumerable <T>和IObservable <T>)之间有什么区别

在每一篇技术讲座中,或者在每篇博文中,我都读过有关IEnumerableIObservable的内容,我读过, IEnumerable是基于拉式的结构, IObservable是基于推送的结构.

我已经读过IObservable,我们有异步调用,没有任何东西被阻止,一切都是基于推送的.

但是,但是,但是...

它到底意味着什么?推动基础和基于

因为在我看来IEnumerable中我们也可以将数据推送到结构中并从中提取数据,我真的迷失在那些技术术语和想法中.

请以正常和人性的方式向我解释这两种结构之间的区别以及基于推进和基于拉的结构之间的区别.

谢谢.

.net c# ienumerable reactive-programming system.reactive

20
推荐指数
3
解决办法
1789
查看次数

默认接口实现.现在,抽象类和接口之间有什么深刻的意义差异?

我知道抽象类是一种无法实例化的特殊类.抽象类只是被分类(继承自).换句话说,它只允许其他类继承它但不能实例化.优点是它为所有子类强制执行某些层次结构.简单来说,它是一种强制所有子类进行相同层次结构或标准的契约.

我也知道An接口不是一个类.它是由Interface这个词定义的实体.接口没有实现; 它只有签名或换言之,只是没有正文的方法的定义.作为与Abstract类相似的一个,它是一个契约,用于为所有子类定义层次结构,或者它定义特定的方法集及其参数.它们之间的主要区别在于类可以实现多个接口,但只能从一个抽象类继承.由于C#不支持多重继承,因此接口用于实现多重继承.

当我们创建一个接口时,我们基本上创建了一组方法,没有必须被实现的类覆盖的任何实现.它的优点是它为类提供了一种方法,使其成为两个类的一部分:一个来自继承层次结构,另一个来自接口.

当我们创建一个抽象类时,我们正在创建一个可能有一个或多个已完成方法的基类,但至少有一个或多个方法未完成并被声明为abstract.如果抽象类的所有方法都未完成,那么它与接口相同.

我注意到我们将在C#8.0中使用默认接口方法

也许我问它因为我只有1 - 2年的编程经验,但现在抽象类和界面之间的主要区别是什么?

我知道我们不能在界面中建立状态,它们之间只有一个区别吗?

c# abstract-class interface c#-8.0 default-interface-member

12
推荐指数
2
解决办法
757
查看次数

什么是 F# 中的可区分联合以及我们在 OOP 中有什么类型的替代方案

我正在从 C# 进入函数式编程。当然,由于我对 C# 的深入了解,我选择了 F# 作为我的第一门函数式语言,并试图花时间学习它。

现在我正处于需要了解什么是歧视工会以及为什么它很重要以及为什么我们实际上需要它的步骤?!

我真的做了很多研究

但是导师、讲师、文章和博客文章的问题在于,人们实际上试图用大量函数式编程术语来描述/教我们歧视联合,这对我们来说当然是非常不可理解的,整个背景都是 OOP 和只需一点 LINQ、表达式和高阶函数。

我是函数式世界的新手,我的大脑充满了 OOP 思维方式,所以很难从这个角度理解这个概念。

如果你真的谷歌它,你会得到那种类型的回应:

Discriminated Unions # 您可以组合单例类型、联合类型、类型保护和类型别名来构建称为可区分联合的高级模式,也称为标记联合或代数数据类型。可区分联合在函数式编程中很有用。

这在我看来真的没有任何意义。所以请以人性和正常的方式告诉我什么是歧视联盟,为什么我们需要它?什么可以与 OOP 世界相比?(因为它真的会帮助我)

谢谢你。

.net f# functional-programming discriminated-union

5
推荐指数
2
解决办法
357
查看次数

如何在 SwiftUI 中单击按钮打开网页视图?

这是我的网络视图

struct Webview: UIViewControllerRepresentable {
    let url: URL

    func makeUIViewController(context: Context) -> WebviewController {
        let webviewController = WebviewController()

        let request = URLRequest(url: self.url, cachePolicy: .returnCacheDataElseLoad)
        webviewController.webview.load(request)

        return webviewController
    }

    func updateUIViewController(_ webviewController: WebviewController, context: Context) {
        //
    }
}

class WebviewController: UIViewController, WKNavigationDelegate {
    lazy var webview: WKWebView = WKWebView()
    lazy var progressbar: UIProgressView = UIProgressView()

    deinit {
        self.webview.removeObserver(self, forKeyPath: "estimatedProgress")
        self.webview.scrollView.removeObserver(self, forKeyPath: "contentOffset")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        self.webview.navigationDelegate = self
        self.view.addSubview(self.webview)

        self.webview.frame = self.view.frame
        self.webview.translatesAutoresizingMaskIntoConstraints = false …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

2
推荐指数
1
解决办法
3018
查看次数